Changes

Jump to navigation Jump to search
Taco's example added
\framed
[width=8cm,
align=flushleft, strut=no]{%no empty line at the beginning
\starttyping[lines=hyphenated]
hööah:aloh/aa?lha llol!loh%lloh#allhal\lohhll;ohohal~loll ohalölo
<context>
%\mainlanguage[fr]
\framed
[width=8cm,
align=flushleft, strut=no]{%no empty line at the beginning
\starttyping[lines=hyphenated]
hööah:aloh/aa?lha llol!loh%lloh#allhal\lohhll;ohohal~loll ohalölo
To the one who wrote this question: the ConTeXt example above shows how to hyphenate verbatim text (you can't really notice that from the example), but not how to hyphenate French verbatim with active characters. You have to ask on the mailing list for that if you are still interested.
 
==Breaking lines on the right border==
 
Inspired by the (bad line breaking) example above, Taco wrote the following macro, which breaks a line as soon as it doesn't fit to the box any more.
 
The second box may serve as an example of what to do when you become desperate about your German grammar and hyphenation rules. The explanation follows [[Verbatim with line breaks#Why German is a relatively easy language|below]]
 
<context>
%
% BREAK is a special pretty handler that auto-wraps lines
% to fit the current hsize.
 
\gdef\BREAKsetspecials%
{\dorecurse{256}{\setpretty\numexpr \recurselevel-1\relax=10 }}
 
\gdef\BREAKsethandlers%
{\installprettyhandler 10 \BREAKtypeone }
 
\newcount\BREAKcharcounter
\newcount\BREAKmaxcharcount
 
\def\BREAKtypeone#1%
{\advance\BREAKcharcounter 1
\ifnum\BREAKcharcounter > \BREAKmaxcharcount
\hfil\break
\BREAKcharcounter=1
\fi
\getpretty{#1}}
 
\def\BREAKsetcounters%
{\setbox\scratchbox=\hbox{0}%
\BREAKmaxcharcount=\hsize
\divide\BREAKmaxcharcount \wd\scratchbox
\def\flushrestofverbatimline{\BREAKcharcounter=0 }%
\BREAKcharcounter=0 }
 
\gdef\setupprettyBREAKtype%
{\def\prettyidentifier{BREAK}%
\BREAKsetcounters
\BREAKsethandlers
\BREAKsetspecials}
 
\installprettytype [BREAK] [BREAK]
 
 
\starttext
\framed
[width=8cm,
align=flushleft,
strut=no]{%
\setuptyping[option=BREAK]
\starttyping
hööah:aloh/aa?lha llol!loh%lloh#allhal\lohhll;ohohal~loll ohalölo
\stoptyping
}
\framed
[width=4cm,
align=flushleft,
strut=no]{%
\setuptyping[option=BREAK]
\starttyping
Hottentottenstottertrottelmutterbeutelrattenlattengitterkastenattentäter
\stoptyping
}
\stoptext
</context>
 
<texcode>
%
% BREAK is a special pretty handler that auto-wraps lines
% to fit the current hsize.
 
\gdef\BREAKsetspecials%
{\dorecurse{256}{\setpretty\numexpr \recurselevel-1\relax=10 }}
 
\gdef\BREAKsethandlers%
{\installprettyhandler 10 \BREAKtypeone }
 
\newcount\BREAKcharcounter
\newcount\BREAKmaxcharcount
 
\def\BREAKtypeone#1%
{\advance\BREAKcharcounter 1
\ifnum\BREAKcharcounter > \BREAKmaxcharcount
\hfil\break
\BREAKcharcounter=1
\fi
\getpretty{#1}}
 
\def\BREAKsetcounters%
{\setbox\scratchbox=\hbox{0}%
\BREAKmaxcharcount=\hsize
\divide\BREAKmaxcharcount \wd\scratchbox
\def\flushrestofverbatimline{\BREAKcharcounter=0 }%
\BREAKcharcounter=0 }
 
\gdef\setupprettyBREAKtype%
{\def\prettyidentifier{BREAK}%
\BREAKsetcounters
\BREAKsethandlers
\BREAKsetspecials}
 
\installprettytype [BREAK] [BREAK]
 
 
\starttext
\framed
[width=8cm,
align=flushleft,
strut=no]{%
\setuptyping[option=BREAK]
\starttyping
Hottentottenstottertrottelmutterlattengitterkotterbeutelratenattentater
\stoptyping
}
\stoptext
</texcode>
 
 
(This has nothing to do with ConTeXt, its just the explanation of the example above.)
 
===Why German is a relatively easy language===
<i>by Gila Scheffler</i>
 
German is a relatively easy language. If you know Latin you're used to
declensions and can learn German without great difficulty. That's what German
teachers tell you at the first lesson. Then you start studying the der, die, das,
den ... and they tell you that everything follows a logical order. So it's easy. And
to prove it, let's look at an example more closely: you sign up for first-year
German and go out and buy the textbook. It's a beautiful, expensive, hardbound
book, published in Dortmund, which talks about the customs of the <i>Hottentots</i>
(Hottentotten in German).
 
The book tells us that when opossums (<i>Beutelratten</i>) are captured, they are
placed in cages (<i>Kasten</i>) with bars made of wood slats (<i>Lattengitter</i>) to keep
them from escaping. These cages are called <i>Lattengitterkasten</i> in German, and
when there are opossums inside them they are known as
<i>Beutelrattenlattengitterkasten</i>.
 
One day, the Hottentot police arrested a would-be murderer (<i>Attentäter</i>), who
allegedly tried to kill a Hottentot mother (<i>Mutter</i>). Her son is a good-for-nothing
stutterer (<i>Stottertrottel</i>), so his mother is, therefore, a
<i>Hottentottenstottertrottelmutter</i> and her would-be murderer is a
<i>Hottentottenstottertrottelmutterattentäter</i>. Easy, right? So the police captured
the suspect and put him, temporarily, in an opossum cage
(<i>Beutelrattenlattengitterkasten</i>) for safekeeping until they could take him to jail.
But the prisoner escaped!
 
A search ensued and a Hottentot warrior cried out, ‘I have captured the murder
suspect (den <i>Attentäter</i>)!’
 
‘Yes? Which one?’ asked the chieftain.
 
‘The <i>Beutelrattenlattengitterkastenattentäter</i>!’ replied the warrior.
 
‘What? The murder suspect who was in the opossum cage?’ asked the
Hottentot chieftain.
 
‘That's right,’ said the warrior, ‘the <i>Hottentottenstottertrottelmutterattentäter</i>.’
 
By now you know enough German to understand that he's talking about the
would-be murderer of the mother of the good-for-nothing Hottentot stutterer,
right?
 
‘Oh, I see,’ says the Hottentot chieftain, ‘why didn't you say so right away? You
could have begun by saying that you had captured the
<i>Hottentottenstottertrottelmutterbeutelrattenlattengitterkastenattentäter</i>!’
 
As you can see, German is a very easy language. All you have to do is pay a
little attention.

Navigation menu