<html><body><div>Ahoj Jardo,</div><div><br></div><div>ukážu řešení v pdfLaTeXu, které ovšem využívá pouze prostředky jádra pdfTeXu, tak by snad mělo fungovat i v LuaLaTeXu. Myšlenkou je předefinovat makro na sazbu sekcí, což se projeví pouze při sazbě a dále to neovlivní text v obsahu. Ukážu to konkrétně na sazbě sekce při použití classu article (v případě jiného classu a jiné definice makra pro sekce se to změní analogicky). V souboru article.sty je definováno</div><div><br></div><div>\newcommand\section{\@startsection {section}{1}{\z@}%<br>                                   {-3.5ex \@plus -1ex \@minus -.2ex}%<br>                                   {2.3ex \@plus.2ex}%<br>                                   {\normalfont\Large\bfseries}}<br><br></div><div>Pokud chceš mikrotypograficky smrštit nadpis, pak nastav nadpisový font, ať se umí smršťovat, a při sazbě nadpisu nastav, ať se smršťuje. Konkrétně například ve svém dokumentu definuj</div><div><br></div><div>\makeatletter<br>{\normalfont\Large\bfseries \pdffontexpand\font 0 100 10 autoexpand }<br>\renewcommand\section{\@startsection {section}{1}{\z@}%<br>                                   {-3.5ex \@plus -1ex \@minus -.2ex}%<br>                                   {2.3ex \@plus.2ex}%<br>                                   {\normalfont\Large\bfseries \pdfadjustspacing2 }}<br>\makeatother<br></div><div><br></div><div>- Nejdříve se lokálně přepne do fontu pro sazbu sekce (ať nemusíš složitě zjišťovat, co za konkrétní fontový soubor se načítá) a ten se nastaví, ať se umí smršťovat. Načtení fontu je vždy globální, takže ta schopnost smršťování bude globální. Hodnota 0 znamená, že se font nebude roztahovat, hodnota 100, že se může smrštit o 100 promile (tj. na 90 procent normální šířky) (doporučuji max 40 promile), hodnota 10, že jsou různě zúžené varianty fontu diskretizovány s krokem 10 promile.</div><div>- Na posledním řádku se pak nastaví, že se má smršťování fontu použít při sazbě nadpisu. Toto nastavení je vždy lokální a neovlivní okolní text.</div><div><br></div><div>Osobně bych to ještě vylepšil následovně.<br></div><div><br></div><div>\makeatletter<br>{\normalfont\Large\bfseries \pdffontexpand\font 0 100 10 autoexpand }<br>\renewcommand\section{\@startsection {section}{1}{\z@}%<br>                                   {-3.5ex \@plus -1ex \@minus -.2ex}%<br>                                   {2.3ex \@plus.2ex}%<br>                                   {\normalfont\Large\bfseries \rightskip0ptplus1fil \hyphenpenalty10000 \pdfadjustspacing2 \linepenalty1000 }}<br>\makeatother<br><br></div><div>- Nastavím pružný pravý okraj pomocí \rightskip. Implicitně totiž okraj v nadpisu nepruží a text víceřádkového nadpisu se nehezky zarovná do bloku s velkými mezislovními mezerami. Takto bude nadpis vysázen na praporek.</div><div>- \hyphenpenalty10000 zakáže dělit slova v nadpisu, což taky nevypadá hezky. A jelikož máme pružný okraj, tak to nevadí.<br></div><div>- Velká hodnota \linepenalty způsobí, že algoritmus řádkového zlomu bude preferovat méněřádkové nadpisy za cenu drobného násilí na fontu před víceřádkovými nadpisy s normálním fontem.<br></div><div><br></div><div>Pokud chceš řešení s přečnívajícím nadpisem, tak namísto předchozího použij<br></div><div><br></div><div>\renewcommand\section{\@startsection {section}{1}{\z@}%<br>                                   {-3.5ex \@plus -1ex \@minus -.2ex}%<br>                                   {2.3ex \@plus.2ex}%<br>                                   {\normalfont\Large\bfseries\rightskip0pt minus1cm }}<br></div><div><br></div><div>případně v podobně vylepšené verzi</div><div><br></div><div>\renewcommand\section{\@startsection {section}{1}{\z@}%<br>                                   {-3.5ex \@plus -1ex \@minus -.2ex}%<br>                                   {2.3ex \@plus.2ex}%<br>                                   {\normalfont\Large\bfseries\rightskip0ptplus1filminus1cm \hyphenpenalty10000 \linepenalty1000 }}<br><br></div><div>- Záporná pružnost \rightskip znamená, že nadpisu dovolíme přečnívat maximálně 1cm do pravého okraje.<br></div><div><br></div><div>Obě výše uvedená řešení samozřejmě můžeš dle libosti nakombinovat. Tak snad jsem Ti pomohl a bude to fungovat i v tom LuaLaTeXu.</div><div><br></div><div>Měj se hezky.</div><div>Honza</div><div><br></div><div><br></div><aside>
---------- Původní e-mail ----------<br>
Od: Jaroslav Hajtmar <hajtmar@gyza.cz><br>
Komu: Czech and Slovak TeX-related mailing list <csTeX@cs.felk.cvut.cz><br>
Datum: 18. 5. 2019 11:33:02<br>
Předmět: [cstex] Zúžení textu v nadpisu při finální úpravě
</aside><br><blockquote data-email="hajtmar@gyza.cz">Dobrý den.<br>Dělám finální úpravy dokumentu a na několika místech v textu dojde k zalomení nadpisu “jen kvůli jednomu písmenku”. Lze nějak dosáhnout nepatrného “smrštění” vysázeného textu, když nelze nějak rozumně modifikovat  text nadpisu? Zkoušel jsem nějaké mikrotypografické balíčky, ale vzhledem k tomu, že překládám dokument LuaLaTeXem, tak se mi žádné z řešení nepodařilo zprovoznit.<br>Možná by stačilo rozšířit nepatrně jen daný nadpisový řádek, bez ohledu na okraj stránky, vizuálně by to bylo pro mne lepší, než to zalomení a ponechání jednoho slova nadpisu na dalším řádku...<br>Díky za tipy.<br>Jarda Hajtmar<br><br><br>_______________________________________________<br>csTeX mailing list<br>csTeX@cs.felk.cvut.cz<br>https://lists.felk.cvut.cz/mailman/listinfo/cstex<br></blockquote></body></html>