
Am 03.03.2025 um 15:46 schrieb Rik Kabel:
On 2025-03-03 08:43, Thomas Meyer wrote:
You mean that: % Set the textarea width to 2.6 alphabets. \setbox\scratchbox\hbox{\dorecurse{26}{\character\recurselevel}} \newdimen\Width \Width=\dimexpr(2.6\wd\scratchbox) That's something I don't understand! What is a 2.6 alphabet? What means "scratchbox", "2.6\wd" ... ?
This is straight TeX (not the higher-level nicety of ConTeXt). What it does is create a throw-away box (a scratchbox) and sets in it horizontally one lower case alphabet of the current body font. It creates that alphabet by setting \character{1}\character{2}... \character{26} using a loop. It then measures the width of the box holding the 26 characters (\wd\scratchbox) and multiplies that by 2.6, depositing the result in \Width.
A more ConTeXt-y way to do this might be:
\def\Alphabet{abcdefghijklmnopqrstuvwxyz} \setupbodyfont[libertinus,12pt] \setwidthof\Alphabet\to\AlphabetWidth
and then use width=2.6\AlphabetWidth in your layout
You can also use the avarage character width of the main language but at the moment it's limited to the four languages shown in the example. \startsetups[averagecharwidth] \page \mainlanguage[#1] \setuplayout[width=70\averagecharwidth] \starttabulate \NC Language \EQ \currentmainlanguage \NC\NR \NC Textwidth \EQ \PtToCm{\the\textwidth} \NC\NR \stoptabulate \samplefile{lorem} \stopsetups \showframe[text][text] \starttext \setupwithargument{averagecharwidth}{en} \setupwithargument{averagecharwidth}{nl} \setupwithargument{averagecharwidth}{de} \setupwithargument{averagecharwidth}{pt} \stoptext Wolfgang