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 -----------------------------------------------------------------