[cstex] BibTeX

Pavel Striz striz at fame.utb.cz
Tue Mar 15 03:09:08 CET 2011


Děkujeme.

Napíší k tomu pár širších slov, pro zájemce.

Ráno jsem měl cvičení se studenty a ukazoval jsem jim LaTeXové prostředí thebibliography a poté BibTeX. Jak na potvoru jsem vymyslel autory do BIB souboru Čapek a Dohnal. Vzápětí jsem zjistil, že Čapek je za Dohnalem a že je něco špatně. Navíc jsem v druhé polovině cvičení ukazoval můj oblíbený nástroj authorindex a opět jsem jak na potvoru v závěru cvičení na to pustil hyperref, a zjistil jsem, že je Seznam autorů nejen špatně setříděn (příjmení začínající š, č, ř nebo ž, ch), ale čísla stran jsou neklikatelná, nikdy při volbě "miniindex" u authorindexu a překvapivě též ani v referencích při zapnutí "backref=page" v hyperref.

http://ftp.cstug.cz/pub/tex/CTAN/indexing/authorindex/authorindex.pdf
http://ftp.cvut.cz/tex-archive/macros/latex/contrib/hyperref/doc/manual.pdf

První problém jsem se snažil vyřešit přes balíček BibLaTeX, na který na mně směřovaly nějaké dotazy od kolegů ze Slovenska. Tam jsem zjistil možnost jazykového přepínání, str. 24:
http://ftp.cvut.cz/tex-archive/macros/latex/contrib/biblatex/doc/biblatex.pdf

Zkusil jsem něco experimentů s utf8-dk.csf, což neobsahuje nic jiného než pravidla třídění. Bohužel k naší škodě bez písmen "č", "ř" či "ž". Zkusil jsem pak nám bližší cp1250pl.csf, který tyto znaky sice obsahuje, ale nikoliv jako skupiny. Odtud i funkční řešení pana Zýky.

Tento přístup BibTeXu8 je nám proti mysli, protože je potřeba kódování cp1250 (či jiné, včetně možnosti utf8) kódovaného souboru s těmito znaky, tedy bez sekvencí \v{r} atd. To je velký nezvyk, neb řadu BIB souborů potkáme právě zapsané nezávisle na kódování. Ale funguje to.

Pokud nechceme použít konverzi, lze např. v utf8 kódovaném TeXovém souboru načíst cp1250 kódovaný soubor přepínáním přes balíček inputenc, viz ukázka. Tento problém se několikrát objevil u zdrojových kódů (balíček listings).

Problém nastává se spřežkou "ch". Dříve, přesněji v BibTeXu7, se to řešilo přes {\relax ch}, viz str. 26:
http://www.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf

Jisté naprogramované řešení mezi češtinou a angličtinou zmiňuje i str. 7 v:
http://www1.cuni.cz/~svejdar/texdev/BibTeXInfo.pdf
Ale soubor csx.bib jsem na internetu nenalezl. Ovšem řešení musí existovat neb dokument výslovně zmiňuje užití BibTeXu8 přímo se souborem cp1250cs.csf.

Po chvíli experimentování jsem zkusil běžné "nulování":
\def\mydismiss#1{}
A zařazení před spřežku. Pracovně jsem zkusil \mydismiss{Hžžž} před "ch". Ale šlo by to určitě vylepšit. Výhoda je, že takto lze "předbíhat" i u jiných spřežek a lze si to aktivovat kdekoliv a kdykoliv ve slově, takže je "ch" a "c"+"h" pod kontrolou.

Definici jsem si umístil do dokumentu, ale správnější by bylo do některého BIB souboru.

Druhý problém kolem authorindexu jsem řešil již jinak. Pravidla třídění jsou zadána natvrdo (Perl v pozadí) a tak nezůstalo než použít parametr "-i" a získat soubor zpracovatelný makeindexem, v mém případě rovnou xindy, kde jdou skutečné divy.

Při rozboru souboru sazba.ain však zjistíme, že není vše ideální. Jednak tam máme zbytkový příkaz \mydismiss, navíc je tam neužitečný údaj pravidla třídění termínu a chybí tam |hyperpage, což se dá zjistit z fungování běžného klikatelného rejstříku či seznamu literatury. Tuto úpravu souboru na sazba.ain -> sazba-temp.ind -> sazba2.ind -> sazba.ind jsem si v závěru dne vychutnal mimo TeX.

Přikládám ukázku (sazba.pdf), kde první strana je tříděna rozumně dle českých zvyklostí a na druhé straně je klikatelný a civilizovaně setříděný seznam autorů z citovaných zdrojů.

Za normálních okolností by ukázka neměla nikomu bez zásahů fungovat (neověřeno), neb
Windows uživatelé potřebují linux nástroje, např. CygWin,
a tuším, že Linux a MacOS uživatelům bude zlobit kódování, neb je zadáno v ukázce napevno cp1250, ale vám budou vyskakovat při generování soubory s latin2 a cp852. 

Hlubší analýza by jistě ukázala, že to není ideální stav, neb minimálně xindy má stále u češtiny nastavena pravidla (forward backward forward forward), ale má být (forward forward forward forward), ovšem soubory CSF i moduly ke xindy jsou již programovatelné!

http://striz9.fame.utb.cz/docasne/tex/bibtex-full-cs.rar 
/39,6 kB/

Hezký večer od PS

 

-----Původní zpráva-----
Od: cstex-bounces+striz=fame.utb.cz at cs.felk.cvut.cz [mailto:cstex-bounces+striz=fame.utb.cz at cs.felk.cvut.cz] za uživatele Vit Zyka
Odesláno: 14. března 2011 22:17
Komu: Czech and Slovak TeX-related mailing list
Předmět: Re: [cstex] BibTeX

Dobry den,

ja jsem ve svem pocitaci nasel prilozene soubory. Podle toho, co je tam 
napsano, jsem asi  ty soubory pripravil sam, ale uz si to nepamatuji. A 
tez mam mlhavy pocit, ze mne to stejne nefungovalo a vyresil jsem 
problem starym 7bitovym bibtexem a perlem. Proto vubec nezarucuji, ze 
jsou ty soubory spravne. Mozno s nimi nakladat, jak je libo.

Zdravi
Vit Zyka

On 14.3.2011 12:03, Pavel Striz wrote:
> Dobry den,
>
> jak tridite v programu BibTeX(8) literaturu, aby Vam fungovalo ceske ci
> slovenske trideni? Divam se, ze doposud mi to nevadilo, ale pri praci s
> \v{C}apkem, \v{S}ustkem ci \v{S}tepnickou uz to vadi.
>
> Zahledl jsem existenci cp1250cz.csf ci cp1250cs.csf (bibtex8 pro
> parametr -c), ale fyzicky tezko rici, kde lezi.
>
> Pokud by mel nekdo hotove, hodilo by se pridat do distribuce BibTeXu ci
> BibLaTeXu.
>
> Zdravi s myslenkou PS



___ Information from ESET Mail Security, ver. 5953 (20110314) ___
The message was checked by ESET Mail Security. www.eset.com






More information about the csTeX mailing list