Fórum Root.cz

Hlavní témata => Software => Téma založeno: Vít Šesták (v6ak) 03. 05. 2015, 20:14:36

Název: LaTeX: fontenc se všemi znaky
Přispěvatel: Vít Šesták (v6ak) 03. 05. 2015, 20:14:36
Zjistil jsem, že neznám ideální fontenc pro LaTeX. Mám dva kandidáty:

\usepackage[IL2]{fontenc} — znaky s diakritikou jsou ve výsledném PDF přímo, takže se dá v něm vyhledávat a ty znaky se dají kopírovat, ale je problém s jinými znaky, jako třeba „<“ nebo „>“. Ty by měly jít napsat přes nějakou de facto escape sekvenci, ale není to ono. (Navíc nevím, jak se pak taková escape sekcence projeví do výsledného textu, ale asi je to menší problém než u diakritiky.)

\usepackage[T1]{fontenc} – znaky jako „<“ a „>“ jsou v pohodě, ale znaky s diakritikou jsou problém. Sice se zobrazí, ale při kopírování nebo vyhledávání tam jsou úplně jiné znaky.

Existuje nějaká varianta bez těchto kompromisů?
Název: Re:LaTeX: Ideální fontenc – přímá podpora českých znaků a různích speciálních znaků
Přispěvatel: nasson 03. 05. 2015, 20:30:56
Předpokládám, že použití LuaTeX nebo XeTeX by bylo řešením, ne?
Název: Re:LaTeX: fontenc se všemi znaky
Přispěvatel: Petr Krčmář 03. 05. 2015, 20:49:31
Přesně tak, já jsem před časem přešel na XeLaTeX a ten sype výstup do PDF přímo v Unicode a je po problémech.
Název: Re:LaTeX: Ideální fontenc – přímá podpora českých znaků a různích speciálních znaků
Přispěvatel: Vít Šesták (v6ak) 03. 05. 2015, 21:09:44
Možná ano, v těchto variantách se moc nevyznám. Zatím používám pdflatex.

Zkusil jsem XeLaTex. Zatím jsem dosáhl trošku jiného kompromisu. Nastavil jsem \usepackage[czech]{babel} a \usepackage{fontspec}, ostatní volby jsem zakomentoval. Čeština je v pohodě. Některé méně speciální znaky jako „<“ a „>“ taky. Fungují i znaky jako \„ a \“ (tj. české uvozovky) nebo „…“ (tj. výpustka). Už ale nefunguje třeba „≤“ nebo „≥“, místo toho se zobrazí bílé místo. Dělám něco špatně, nebo prostě tyto znaky nemá většina lidí na klávesnici, takže to jen ještě skoro nikdo neřešil?
Název: Re:LaTeX: fontenc se všemi znaky
Přispěvatel: Petr Krčmář 03. 05. 2015, 21:29:15
Mně to funguje správně. Výstup je v příloze, zdroják vypadá takto:

Kód: [Vybrat]
\documentclass[a4paper,11pt]{article}
\usepackage[czech]{babel}
\usepackage{xltxtra}
\setromanfont{DejaVu Serif}

\begin{document}
S \XeLaTeX em to zjevně funguje správně: „≤“ a „≥“ zapsané normálně jako Unicode.
\end{document}
Název: Re:LaTeX: fontenc se všemi znaky
Přispěvatel: Vít Šesták (v6ak) 03. 05. 2015, 22:32:00
Díky moc.

Aha, takže toto je už asi věc fontu. Příkaz \setromanfont{DejaVu Serif} rozhodne o tom, jestli se znaky „≤“ a „≥“ zobrazí správně. Takže asi omezení od Computer Modern.

Bez něj se navíc snad všechny non-ASCII znaky (vč. např. „ě“) kopírují jako \uXXXX. I když taky záleží, co všechno naberu, možná to tedy bude spíš nějaká specialita Evince.