[cstex] OPmac a velmi dlouhá poznámka pod čarou

Marcel Svitalský marcel.svitalsky at centrum.cz
Wed Aug 26 19:58:01 CEST 2015


Dobrý den,

děkuji za odpověď, a rozhodně děkuji i za její délku — pro mne je naopak
přínosem. Moje TeXování je spíše nárazové, takže i mé znalosti jsou
leckde nesystematické a různě hluboké, tudíž takovéto podrobné
vysvětlení jednoho konkrétního jevu je to nejlepší, co si mohu přát.

Velice to oceňuji a ještě jednou děkuji. Zdravím
Marcel Svitalský


On 26.8.2015 18:47, Petr Olsak wrote:
>
> Dobrý den,
>
> má odpověď asi znovu sníží Vaši důvěru v TeX :).
>
> Pomocí \dimen\footins=\vsize nelze zajistit, aby se do stránky
> nedostalo někdy trochu hlavního textu na stránkách, které obsahují
> pokračující dlouhou poznámku. Že se Vám to projevilo při použití
> varianty Vámi označované jako "OPmac" a ne "plain" je dílem náhody.
>
> Upozorňuji a omlouvám se: vysvětlující text bude delší.
>
> Nejprve vysvětlím princip, pak vysvětlím rozdíl mezi Vámi zaslanými dvěma
> variantami.
>
> Prncip. Na pokračující stránce s dlouhou poznámkou nejprve TeX interně
> udělá
>
> \vsplit\footins to D
>
> kde D je maximum z \vsize a \dimen\footins. Takto odlomený materiál s
> textem poznámky typicky nemá přesně výšku D a je díky meziřádkovým
> penaltám a pružnostem mezi odstavci ochoten se odlomit dřív než na
> výšce D, typicky mezi odstavci. Pak odlomený text splaskne na
> přirozený rozměr bez pružností. Dejme tomu, že přirozená výška
> odlomené poznámky je D-x. Do vzniklého místa x se TeX pokusí vložit
> \skip\footins (plainTeX ji nastavuje na 12 pt plus pružnost z
> \bigskip) a pokud stále je ještě místo, skusí tam TeX narvat řádky
> hlavního textu.
>
> Je tedy zřejmé, že pokud je x > 12 pt a rozdíl je takový, že se tam
> vejdou
> řádky hlavního textu a tyto řádky jsou od sebe odlomitelné (nejsou
> slepené
> \nobreak penaltou), pak se na té stránce bohužel objeví.
>
> Nyní vysvětlím rozdíl mezi variantou
>
> A) \footnote{$^1$}{\typoscale[800/800] text poznámky}  a
>
> B) \fnote{text poznámky} (z OPmac)
>
> Především si můžete povšimnout, že první řešení A) je nesprávné,
> protože nedodrží správné řádkování u posledního odstavce poznámky,
> tedy na straně 7 Vašeho díla. Je to tím, že \footnote z plain.tex
> expanduje (po vynechání expanze značky v hlavním textu) zhruba řečeno na:
>
> \insert{nastavení \splittopskip=\ht\strutbox a dalších
>         zahájení prvního odstavce poznámky značkou (tj. zde $^1$)
>         {obsah parametru}%
>         \strut
> }
>
> Můžete si všimnout, že obsah parametru je uzavřen do skupiny, takže
> poslední odstavec (formátovaný implicitním \par v místě konce \insert
> za \strut) už neobsahuje zmenšený \baselineskip, pokud toto nastavení
> provedete uvnitř parametru. Navíc uvozující značka $^1$ není zmenšena
> na 80 %, protože zmenšení písma proběhne až na začátku obsahu
> parametru. Pokud byste chtěl opravit řádkování posledního odstavce
> tím, že byste obsah parametru ukončil \par, pak se Vám to povede jen
> se zavlečením další chyby, neboť nyní \strut v makru zahájí další,
> tentokrát prázdný odstavec, takže v poznámce na konci budete mít jeden
> (neviditelný) prázdný řádek, který se projeví, když si to pořádně
> změříte nebo když za jednou poznámkou následuje další.
>
> Ale toto řešení mělo pro Vás čistě náhodu tu výhodu, že neprosákl hlavní
> text na pokračující stránky.
>
> B) OPmac obchází výše popsané problémy při zmenšování písma a
> řádkování tak, že \fnote zhruba řečeno expanduje na:
>
> {\typoscale[800/800] \insert volaný pomocí plainTeXového \vfootnote}
>
> tedy po rozepsání:
>
> {\typoscale[800/800]
>   \insert{nastavení \splittopskip=\ht\strutbox a dalších
>           zahájení prvního odstavce poznámky značkou
>           {obsah parametru}%
>           \strut
>   }%
> }
>
> Protože \typoscale[800/800] zmenšuje nejen \baselineskip, ale i další
> parametry závislé na řádkování (například \strutbox) a protože
> \splittopskip je nastaven v plainTeXovém \vfootnote na výšku
> \strutboxu, je při \fnote z OPmac nastaven menší \splittopskip (o 1.7
> pt) než při klasické \footnote. Výsledek zlomu poznámky je tedy o 1.7
> pt menší a tedy x je o 1.7 pt větší. A tak se stalo, že do takto
> zvětšeného x se už vešel řádek z hlavního textu.
>
> Je tedy vidět, že OPmac nastavuje věci správně, protože mít
> \splittopskip nastaven na výšku aktuálního (na 80 % zmenšeného)
> \strutboxu je daleko logičtější než ho mít podle strutboxu hlavního
> textu. Jen má pak OPmac tu smůlu, že když se dlouhá poznámka na
> pokračující stránce zlomí ve stejném místě, je ve výsledku x větší a
> může se asi s větší pravděpodobností stát, že se tam propasíruje řádek
> hlavního textu.
>
> Nemám jednoduché řešení, které absolutně zajistí nepropasírování řádku
> textu do mezýrky x. Pro Váš případ tedy by stačilo
>
> \advance\skip\footins by1.7pt
>
> coz dá do prostoru x větší mezeru a tím zmenší zbytek x na stejnou
> velikost, jako při Vašem řešení A). Ovšem mezera mezi hlavním textem a
> čárou poznámky je o 1.7 pt větší. Zatímco ve Vašem řešení A) je větší
> mezera mezi čarou poznámky a prvním řádkem poznámky (což právě
> způsobuje \splittopskip).
>
> Uff. Zdravím
>
> Petr Olšák
>
>
>
> On Wed, 26 Aug 2015, Marcel Svitalský wrote:
>
>> Dobrý den,
>>
>> mám zde další možná bug report ? tentokrát k OPmac ?,možná jen dotaz.
>> Mám v textu
>> velmi ? velmi! ? dlouhou poznámku pod čarou, přes několik stránek.
>> Proto nastavuji
>> \dimen\footins = \vsize, aby na stránkách následujících začátek
>> poznámky tato
>> vyplnila celou stranu (má-li k tomu dost materiálu).
>>
>> Toto řešení funguje dobře při použití plainovského makra \footnote,
>> nefunguje
>> však (někdy) s makrem \fnote z OPmac:
>>       % toto funguje správně (číslo poznámky je v tomto příkladu
>> natvrdo)
>>       \long\def\fnoteBegin
>>       #1\fnoteEnd{\footnote{$^1$)}{\typobase\typoscale[800/800]#1}}
>>
>>       % toto občas nefunguje správně
>>       \long\def\fnoteBegin #1\fnoteEnd{\fnote{#1}}
>>
>> Přikládám ilustrativní soubor dilo.tex vyTeXovaný jednou s prvou
>> (dilo-footnote-plain.pdf) a podruhé se druhou
>> (dilo-footnote-opmac.pdf) definicí.
>> Ve druhém PDF souboru je na stránkách čtyři a pět nahoře vidět, že ač
>> poznámka
>> zdaleka není vyčerpána, na stránku se vecpaly jednou dva a jednou
>> jeden řádek
>> hlavního textu.
>>
>> Nemohu samozřejmě vyloučit, že k témuž nedojde při jiné konfiguraci i s
>> plainovským makrem footnote, ale mně se tak děje jen s OPmac
>> variantou. Pokud se
>> nejedná o bug, pokud je tedy takové chování při \dimen\footins rovné
>> \vsize
>> přípustné, rád bych se zeptal, jak zařídit, tedy jaké další parametry
>> nastavit a
>> na jaké hodnoty, aby k tomu nemohlo docházet.
>>
>> Děkuji a zdravím
>> Marcel Svitalský
>>
>> -- 
>> Marcel Svitalský 
>>
>>
>
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex

-- 
Marcel Svitalský/ /
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20150826/1ee76d40/attachment-0003.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 246 bytes
Desc: OpenPGP digital signature
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20150826/1ee76d40/attachment-0003.bin>


More information about the csTeX mailing list