Changes

Jump to navigation Jump to search
1,614 bytes added ,  12:26, 14 September 2017
add link to \startTEXpage
== Cropping text ==
There are some rare cases in which it is useful to crop truncate a givenline of text line and loose part discard some of its informationit.
=== <tt>\doboundtext</tt> ===
<texcode>
\doboundtext{My entire inheritance goes to my beloved cat Pussy!}{70mm60mm}{...}
</texcode>
<context>
\ss\x\doboundtext{My entire inheritance goes to my beloved cat Pussy!}{70mm60mm}{...}
</context>
 
=== <tt>\limitatetext</tt> ===
\limitatetext {text} {width} {sentinel}
\limitatetext {text} {-width} {prelude}
\limitatetext {text} {width1 , width2} {symbol}
</texcode>
When no <tt>width</tt> is given, the whole <tt>text</tt> becomes available.
A negative value crops the beginning and the text starts with
the <tt>prelude</tt>. Sentinel and prelude are both optional.Just look at the example, to see what happens, if you call the macro withtwo positive dimensions...
Example:
<texcode>
\limitatetext {Pussy is the name of the cat!}{50mm38mm}{...}\par\limitatetext {Pussy is the name of the cat!}{-50mm38mm}{...}\par\limitatetext {Pussy is the name of the cat!}{12mm, 12mm}{...}
</texcode>
<context>
\limitatetext {\ss\x Pussy is the name of the cat!}{50mm38mm}{...}\par\limitatetext {\ss\x Pussy is the name of the cat!}{-50mm38mm}{...}\par\limitatetext {\ss\x Pussy is the name of the cat!}{10mm, 10mm}{...}
</context>
<tt>\underbar</tt> is possible), while <tt>\doboundtext</tt> works better
on text that cannot be hyphenated.
 
=== <tt>\limitatefirstline</tt> ===
so it shares the problem with nonbreakable text.
But in contrast to <tt>\limitatetext</tt> it has a second mechanism, that is only used,
if the prior one failsor if the result of breaking is wasting too much space.This fail safe mechanism "simply" clips (no breaking at all) the text to the disireddesired
measures. This is done without any consideration to character boundaries.
So you must live with the fact, that the last character can be cut off at any possible
<texcode>
\limitatefirstline {\underbar{Mr.~Drofnats was happiest when he was at work%
typesetting beautiful documents.}{110mm109mm}{\unknown}
</texcode>
 
<context>
\unprotect
 
\def\limitatefirstline#1#2#3%
{\hbox\bgroup\strut\dontcomplain \setbox\scratchbox\hbox{\begstrut#1\endstrut}% \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{\strut\unhbox\plusone}% \hbox % to #2 {\ifx\clip\undefined \box\plusone \else\ifdim\wd\plusone>\hsize \lower\strutdepth\hbox{\clip[\c!width=\hsize,\c!height=\lineheight]{\hbox{\raise\strutdepth\box\plusone}}}% \else\ifdim\wd\plusone<\dimexpr\hsize-6ex\relax% tolerance for "successful" breaking \lower\strutdepth\hbox{\clip[\c!width=\hsize,\c!voffsetheight=-4pt\lineheight]{\boxhbox{\raise\strutdepth\hbox{\begstrut#1\plusoneendstrut}}}}% \else \box\plusone \fi\fi\fi \removeunwantedspaces#3}}% \removeunwantedspaces\hss#3}}% \else #1% \fi \egroup}
\protect
 \limitatefirstline {\ss\x\underbar{Mr.~Drofnats was happiest when he was at work typesetting beautiful documents.}}{110mm107mm}{\unknown}
</context>
 
In this example breaking is successful (right after the word typesetting),
but the gap between the breaking point and the given width is too big.
So clipping is used here.
=== A direct comparison ===
|<context>\ss\x\limitatefirstline{\underbar{In a bar, under the sea}}{31mm}{...}</context>
|}
 
== Fitting text ==
You can fit text into a box by:
 
<texcode>
\def\HowStrange#1{#1\ifx#1\blankspace\else\allowbreak\fi}
 
\framed
[width=2cm,align={normal,verytolerant,stretch}]
{\handletokens There are some rather long titles that needs to be typeset.\with\HowStrange}
</texcode>
 
<context>
\def\HowStrange#1{#1\ifx#1\blankspace\else\allowbreak\fi}
 
\framed
[width=2cm,align={normal,verytolerant,stretch}]
{\handletokens There are some rather long titles that needs to be typeset.\with\HowStrange}
</context>
 
There is also similar facility for verbatim text in [[Verbatim_with_line_breaks]] section.
 
== See also ==
 
* If you meant to crop a page ''to'' some text, see {{cmd|startTEXpage}}
 
{{Getting started navbox}}

Navigation menu