Portál AbcLinuxu, 30. dubna 2025 09:08
TeX Live 2008 v Gentoo standardně pro csplain používá kódování ISO8859-2. Na internetu je je několik návodů, jak přepnout na UTF-8 – ovšem všechny předpokládají odkomentování již připravených řádků v konfiguraci, které v Gentoo jaksi nejsou. Jenže ony konfigurační soubory se různě generují a kompilují, pro neTeXaře je to magická skříňka. Po několika pokusech jsem zjistil, jak do té skříňky správně šťouchnout, aby z ní vypadlo kódování UTF-8 – snad mi v diskusi někdo poradí, jak to udělat správně, jak to celé funguje a dospějeme k nějakému patchi.
Postup ve stylu „nevím proč a nevím jak, ale funguje to“ je následující: v souboru /etc/texmf/fmtutil.d/format.csplain.cnf
zakomentovat dva řádky, které tam jsou, a nahradit je jinými:
# ------------------------------------------------------------------ # $Id: format.csplain.cnf 8442 2008-05-31 23:30:56Z karl $ #csplain pdftex - -etex -translate-file=cp227.tcx csplain.ini #pdfcsplain pdftex - -etex -translate-file=cp227.tcx csplain.ini csplain pdftex - -etex -enc csplain-utf8.ini pdfcsplain pdftex - -etex -enc csplain-utf8.ini
Pak už jen stačí spustit texmf-update
(resp. konkrétně /usr/sbin/texmf-update
, pronést nějaké to zaříkadlo, a je hotovo – zdrojové soubory pro csplain jsou nyní očekávány v UTF-8. Tedy alespoň trochu – písmenka s diakritikou fungují správně, třeba české uvozovky „ a “ už ne…
Otázka tedy je, zda tato úprava je vůbec správně (neměla by se konfigurace měnit spší třeba přes fmtutil-sys --edit
?), druhá věc je, zda je „správně“ to, že si csplain
neporadí s přímým vložením znaků jako české uvozovky, nebo zda by to měl zvládnout (v TeTeXu mi to takhle fungovalo…)
Tiskni
Sdílej:
A není lepší rovnou použít XeTeX a nesrat se s 8-bity?
pdftex
nebo pdflatex
vyrobily PDF s českým textem. Ale TeXové balíčky pro Gentoo asi ještě nejsou úplně "plug-and-play", protože když mám nastavený use flag unicode
, předpokládal bych, že to bude fungovat hned po instalaci správně. A dokumentace pro csplain
z roku 2000, která se týká TeTeXu mi nepřipadá úplně aktuální, abych to podle ní dokázal opravit.
No ale texlive
má taky use flag xetex
, tak proč nezkusit co to udělá, že…
TeX používám jenom občas jako uživatel, vždycky se mi to nakonec podařilo nějak splácat, že pdftex nebo pdflatex vyrobily PDF s českým textem.Občas používám ConTeXt (dev-texlive/texlive-context) a české texty mi to vyrábí i bez plácání.e
XeTeX i XeLaTeX jsou součástí TeX Live. A opravdu, jak někdo píše níže, podpora UTF-8 v csplainu neznamená, že budete moci používat všechny znaky Unicode, jedná se jen o překódování. Ostatně originální TeX, na němž csplain, cslatex i babelizovaný latex staví, umí pouze 8-bitové znakové sady a podpora UTF-8 v babelu je jen jakýsi hack, který za něktěrých okolností funguje a za jiných ne.
Proto, pokud skutečně potřebujete používat Unicode znaky, doporučuji XeTeX resp. XeLaTeX. Jenom z osobní zkušenosti dodám, že v XeTeXu mi nedávno nefungovala italická korekce a nepodařilo se mi zjistit, proč tomu tak je.
Když jsem přecházel na OS X, tak jsem zároveň přešel na XeLaTeX. Jak se to instaluje a nastavuje, netuším. Pro OS X snad ani normální TeX naštěstí není. Možná přes MacPorts… Kdo ví…
No, a výsledek?
Podle mě se na XeLaTeX (nebo XeTeX, chcete-li) přejít vyplatí. Velice zajímavá je třeba i nativní podpora OpenType, TrueType a Type1 písem v systému.
V příloze je ukázka šablony. Pouze jsem použil dva systémové fonty a dopsal text. Nemám čas se s tím mazlit, takže omluv prosím jistou dávku nedotaženosti… (překlady atd.)
IMO: měl by se použít balík polyglossia, aby to respektovalo české dělení slov a další česká typografická pravidla (např. \frenchspacing). Navíc, pokud jsem pochopil otázku, je hledáno řešení pro TeX resp. XeTeX.
Ještě bych doplnil, že zapnuté mapování fontů (Mapping=tex-text) může způsobit problémy a preferovaný způsob je psát unicodové pomlčky místo např. "--".
Chtěl bych se jen zeptat, zda-li u fontů, které to podporují, funguje italická korekce?
IMO: měl by se použít balík polyglossia, aby to respektovalo české dělení slov a další česká typografická pravidla (např. \frenchspacing). Navíc, pokud jsem pochopil otázku, je hledáno řešení pro TeX resp. XeTeX.
Ještě bych doplnil, že zapnuté mapování fontů (Mapping=tex-text) může způsobit problémy a preferovaný způsob je psát unicodové pomlčky místo např. "--".
Děkuii za poznámky. V příštím životě se na to určitě podívám.
Chtěl bych se jen zeptat, zda-li u fontů, které to podporují, funguje italická korekce?
Absolutně netuším.
Mně tedy italická korekce funguje, nicméně u spousty fontů je mnohem menší, než u Computer Modern a Latin Modern. :(
Hele, jak jsem psal nahoře. Asi jsem to nenapsal dostatečně důrazně. O XeTeXu vím jen následující:
Víc o tom opravdu nevím. Ty doby, kdy jsem měl čas ladit šílený makra v obskurní syntax několik týdnů, jsou naštěstí nenávratně pryč.
Takže se omlouvám. O XeLaTeXu vím, jen že se mi na OS X chová tak, jak bych od TeXu očekával. Přistupoval jsem k tomu velmi skepticky, ale teď s odstupem času musím říct, že problémy s TeXem jsem měl vždy jen na Linuxu. :-/
\usepackage[czech]{babel}
jinak mi to negeneruje automatické názvy česky a nedělí. A \usepackage{polyglossia}
bych vyřadil, protože s ním mi to prostě nedělí a stěžuje si to na neexistenci gloss-něco souboru.
S XeLaTeXem by se měl použít balík polyglossia a ne babel. Mělo by stačit
\usepackage[czech]{polyglossia}
nebo
\usepackage{polyglossia}
\setdefaultlanguage{czech}
\documentclass{article}
\usepackage[czech]{babel}
\usepackage[IL2]{fontenc}
\usepackage[latin2]{inputenc}
\textwidth=10cm % abych lip videl ze se deli slova
\begin{document}
\def\a{Píšu česky a používám háčky a čárky. Pěkně se dělí slova.
Přepenicilínovaný. Nejneobhospodařovatelnější. }
\def\b{\a \a \a \a \a}
\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
\end{document}
jojo, ja jsem odpovidal na ten prispevek s cslatexem,
pro cestinu v plainu nebo amsetxu jsem pozival csplain resp. upraveny csplain + amstex, ale uz jsem to dlouho nepouzil.
O contextu byl ted nejaky clanek ve zpravodaji CSTUGu, a lide kteri pouzivaji context ctou konferenci cstexu. Tak se mozna zeptat tam?
\usepackage[czech]{babel}
to funguje.
uz jsou tusim zastarale a nepouzivaji se.
A jak jste na to přišel? IMO výhoda csplainu je, že texty v něm napsané mohu vysázet v roce 2000 i v roce 2009 a vypadají pořád stejně (resp. jsou nerozeznatelné) a nejsou s tím žádné problémy, což se bohužel nedá říct LaTeXu nebo XeTeXu.
cslatex uz dal neni podporovan a CSTUGem je podporovana cestina v babelul, ktera je lepsi.
Pokud už se člověk dokázal smířit s tím, že celá ta csplain věc je strašný problém, tak asi jo, žádné nové v poslední době nepřibyly :)
\documentclass[11pt]{article} \usepackage[utf8]{inputenc} \usepackage{czech} \usepackage{a4wide} \usepackage{graphics} \usepackage{epsfig} \usepackage{setspace} \usepackage{indentfirst} \begin{document}a to je celé
Pokud chcete nativni podporu UTF-8 pro TeXLive, pak se podivejte sem:
http://bugs.gentoo.org/show_bug.cgi?id=263531
Jedna se o systemove reseni celeho problemu a vysledek je zaruceny. Pokud vam to bude fungovat, prispejte do diskuze a podporte zacleneni do Portage Tree.
Neexistuje, toto není řešení pro [cs]plain.
Osobně nevidím problém zdrojáky konvertovat z UTF8 do ISO-l2. Lze to udělat na mnoha různých úrovních. Používání unicode znaků vede k nejednoznačnosti, spoléhal bych se na samotný csplain, kde \uv{text} bude fungovat správně. Nemluvím o fontech, kde různé pomlčky ani nemusí být definovány. Jinými slovy, nechť csplain dělá to, co umí - zdrojáky není problém převést do požadovaného kódování.
Používání unicode znaků vede k nejednoznačnostiPoužití některých unicode znaků vede k nejednoznačnosti. Na českých uvozovkách například není nic nejednoznačného. Stejně tak na (základních) řeckých písmenech, i když se třeba může stát, že se některá z nich přeloží jako \varpísmena. Unicode matematické znaky jsou povětšinou taky jednoznačné.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.