Peter Rolf wrote:

Hi,

Hans Hagen wrote:
Peter Rolf wrote:

Sorry to bother you Hans, but the macro is not working as expected...

I can see the cropped text (\underbar + special symbols) and there is an
hyphen symbol in the text only example.

I've added the example code I used for tests with \limitatetext and
\doboundtext.


\def\limitatefirstline#1#2#3%
{\hbox\bgroup\strut
 \setbox\scratchbox\hbox{#1}%
 \ifdim\wd\scratchbox>#2\relax
   \setbox\scratchbox\hbox{#3}%
   \hsize#2\relax
   \advance\hsize-\wd\scratchbox
   \setbox\scratchbox\vbox{\forgetall\veryraggedright#1}%
   \setbox\scratchbox\vsplit\scratchbox to \lineheight
   \vbox
     {\unvbox\scratchbox
      \global\setbox\plusone\lastbox
      \global\setbox\plusone\hbox{\unhbox\plusone}}%
^^^^

   \box\plusone\removeunwantedspaces#3%
 \else
   #1%
 \fi
 \egroup}

of course there must be something to break (not possible with the non
letters, so there you either need to add \hskip0pt's or do real clipping
Hans

So it fails in any case of nonbreakable text.

How about adding a failsafe test ala

\ifdim\dimexpr\wd\plusone+\wd of sentinel\relax>#2\relax
 \clip[width=\wd\plusone,...]{...#1...}\removeunwantedspaced#3%
\else
 \box\plusone\removeunwantedspaces#3%
\fi

One (ugly looking) partial character is still better than a bunch of
characters, that cross the width border.

I have played around with \clip, but it acts a little wild (vertical
position and height). Can't subdue it myself...
\unprotect

\def\limitatefirstline#1#2#3%
 {\hbox\bgroup\strut
  \setbox\scratchbox\hbox{#1}%
  \ifdim\wd\scratchbox>#2\relax
    \setbox\scratchbox\hbox{#3}%
    \hsize#2\relax
    \advance\hsize-\wd\scratchbox
    \setbox\scratchbox\vbox{\forgetall\veryraggedright#1}%
    \setbox\scratchbox\vsplit\scratchbox to \lineheight
    \vbox
      {\unvbox\scratchbox
       \global\setbox\plusone\lastbox
       \global\setbox\plusone\hbox{\unhbox\plusone}%
       \ifx\clip\undefined
         \box\plusone\removeunwantedspaces#3%
       \else\ifdim\wd\plusone>\hsize
         \hbox{\clip[\c!width=\hsize]{\box\plusone}#3}%
       \else
         \box\plusone\removeunwantedspaces#3%
       \fi\fi}%
  \else
    #1%
  \fi
  \egroup}

\protect

\ruledhbox{\limitatefirstline{xxxxxxxxxxxxxxxxxxxx}{3cm}{...}}


now you owe this list at least three wiki pages -) Hans
-----------------------------------------------------------------
                                         Hans Hagen | PRAGMA ADE
             Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
    tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                            | www.pragma-pod.nl
-----------------------------------------------------------------

_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context

Reply via email to