<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Dobrý den,<br>
<br>
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.<br>
<br>
Velice to oceňuji a ještě jednou děkuji. Zdravím<br>
Marcel Svitalský<br>
<br>
<br>
<div class="moz-cite-prefix">On 26.8.2015 18:47, Petr Olsak wrote:<br>
</div>
<blockquote
cite="mid:alpine.LNX.2.00.1508261712490.13862@newton.feld.cvut.cz"
type="cite">
<br>
Dobrý den,
<br>
<br>
má odpověď asi znovu sníží Vaši důvěru v TeX :).
<br>
<br>
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.
<br>
<br>
Upozorňuji a omlouvám se: vysvětlující text bude delší.
<br>
<br>
Nejprve vysvětlím princip, pak vysvětlím rozdíl mezi Vámi
zaslanými dvěma
<br>
variantami.
<br>
<br>
Prncip. Na pokračující stránce s dlouhou poznámkou nejprve TeX
interně udělá
<br>
<br>
\vsplit\footins to D
<br>
<br>
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.
<br>
<br>
Je tedy zřejmé, že pokud je x > 12 pt a rozdíl je takový, že se
tam vejdou
<br>
řádky hlavního textu a tyto řádky jsou od sebe odlomitelné (nejsou
slepené
<br>
\nobreak penaltou), pak se na té stránce bohužel objeví.
<br>
<br>
Nyní vysvětlím rozdíl mezi variantou
<br>
<br>
A) \footnote{$^1$}{\typoscale[800/800] text poznámky} a
<br>
<br>
B) \fnote{text poznámky} (z OPmac)
<br>
<br>
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:
<br>
<br>
\insert{nastavení \splittopskip=\ht\strutbox a dalších
<br>
zahájení prvního odstavce poznámky značkou (tj. zde $^1$)
<br>
{obsah parametru}%
<br>
\strut
<br>
}
<br>
<br>
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ší.
<br>
<br>
Ale toto řešení mělo pro Vás čistě náhodu tu výhodu, že neprosákl
hlavní
<br>
text na pokračující stránky.
<br>
<br>
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:
<br>
<br>
{\typoscale[800/800] \insert volaný pomocí plainTeXového
\vfootnote}
<br>
<br>
tedy po rozepsání:
<br>
<br>
{\typoscale[800/800]
<br>
\insert{nastavení \splittopskip=\ht\strutbox a dalších
<br>
zahájení prvního odstavce poznámky značkou
<br>
{obsah parametru}%
<br>
\strut
<br>
}%
<br>
}
<br>
<br>
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.
<br>
<br>
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.
<br>
<br>
Nemám jednoduché řešení, které absolutně zajistí nepropasírování
řádku
<br>
textu do mezýrky x. Pro Váš případ tedy by stačilo
<br>
<br>
\advance\skip\footins by1.7pt
<br>
<br>
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).
<br>
<br>
Uff. Zdravím
<br>
<br>
Petr Olšák
<br>
<br>
<br>
<br>
On Wed, 26 Aug 2015, Marcel Svitalský wrote:
<br>
<br>
<blockquote type="cite">Dobrý den,
<br>
<br>
mám zde další možná bug report ? tentokrát k OPmac ?,možná jen
dotaz. Mám v textu
<br>
velmi ? velmi! ? dlouhou poznámku pod čarou, přes několik
stránek. Proto nastavuji
<br>
\dimen\footins = \vsize, aby na stránkách následujících začátek
poznámky tato
<br>
vyplnila celou stranu (má-li k tomu dost materiálu).
<br>
<br>
Toto řešení funguje dobře při použití plainovského makra
\footnote, nefunguje
<br>
však (někdy) s makrem \fnote z OPmac:
<br>
% toto funguje správně (číslo poznámky je v tomto příkladu
natvrdo)
<br>
\long\def\fnoteBegin
<br>
#1\fnoteEnd{\footnote{$^1$)}{\typobase\typoscale[800/800]#1}}
<br>
<br>
% toto občas nefunguje správně
<br>
\long\def\fnoteBegin #1\fnoteEnd{\fnote{#1}}
<br>
<br>
Přikládám ilustrativní soubor dilo.tex vyTeXovaný jednou s prvou
<br>
(dilo-footnote-plain.pdf) a podruhé se druhou
(dilo-footnote-opmac.pdf) definicí.
<br>
Ve druhém PDF souboru je na stránkách čtyři a pět nahoře vidět,
že ač poznámka
<br>
zdaleka není vyčerpána, na stránku se vecpaly jednou dva a
jednou jeden řádek
<br>
hlavního textu.
<br>
<br>
Nemohu samozřejmě vyloučit, že k témuž nedojde při jiné
konfiguraci i s
<br>
plainovským makrem footnote, ale mně se tak děje jen s OPmac
variantou. Pokud se
<br>
nejedná o bug, pokud je tedy takové chování při \dimen\footins
rovné \vsize
<br>
přípustné, rád bych se zeptal, jak zařídit, tedy jaké další
parametry nastavit a
<br>
na jaké hodnoty, aby k tomu nemohlo docházet.
<br>
<br>
Děkuji a zdravím
<br>
Marcel Svitalský
<br>
<br>
--
<br>
Marcel Svitalský
<br>
<br>
<br>
</blockquote>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
csTeX mailing list
<a class="moz-txt-link-abbreviated" href="mailto:csTeX@cs.felk.cvut.cz">csTeX@cs.felk.cvut.cz</a>
<a class="moz-txt-link-freetext" href="https://lists.felk.cvut.cz/mailman/listinfo/cstex">https://lists.felk.cvut.cz/mailman/listinfo/cstex</a>
</pre>
</blockquote>
<br>
<div class="moz-signature">-- <br>
Marcel Svitalský<i> </i>
</div>
</body>
</html>