Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
Často se stává, že není možné sazbu v definitivní podobě vytvořit hned po
prvním průchodu zpracování TeXem. Důvodem může být například potřeba zařadit obsah
publikace na začátek, přitom obsah odkazuje na kapitoly a na stránky, které
teprve budou vysázeny. Obecně se tomu říká „dopředná reference“. Uživatel
v místě odkazu napíše třeba \pgref[lejblík]
a v místě cíle,
který je v sazbě později, napíše \label[lejblík]
. Při prvním
zpracování TeX do místa odkazu napíše třeba otazník a na terminál varování.
Jakmile později v sazbě narazí na \label[lejblík]
, propojí
lejblík
s číslem aktuální strany a uloží si dvojici
lejblík=strana
do pracovního souboru. Při druhém zpracování dokumentu TeX
na začátku nejprve přečte pracovní soubor a uloží si z něj do paměti
potřebné informace. Jakmile se dostane do místa \pgref[lejblík]
, ví, jakou
stranu má místo lejblíku napsat. Během každého průchodu TeX pracovní soubor přečte
(pokud existuje), smaže a znovu do něj zapisuje. Po každém průchodu jsou tedy
v pracovním souboru všechny informace aktualizované.
Zakládání a čtení pracovních souborů lze programovat pomocí maker TeXu. Pro
zápis se používá příkaz \write
, pro čtení příkaz \input
,
výjimečně příkaz \read
. LaTeX zakládá pro účely referencí soubor
s příponou aux
a speciálně pro obsah soubor s příponou
toc
. OPmac pro oba účely zakládá společný soubor s příponou
ref
.
Je možné, že ani po dvou průchodech není sazba v pořádku. Čtenář si jistě rozmyslí, že třeba vícestránkový obsah vpředu potřebuje tři průchody, než jsou odkazy na stránky v pořádku.
Zpracování maker a umisťování sazby do stránek probíhá asynchronně.
V době, kdy zpracováváme makro \label
typicky nevíme, na které straně
se toto místo objeví. TeX totiž rozhodne o stránkovém zlomu později, než je
zpracováno makro \label
, a může odsunout inkriminované místo na
následující stranu. Proto je příkaz \write
vybaven možným zpožděním: bude
pracovat až tehdy, když bude stránkový zlom vyřešen. Pak tedy \write
zapíše do souboru správné číslo strany. Kvůli tomuto zpoždění při vytvoření dvojice
lejblík=strana
je nutné přes pracovní soubor zpracovávat nejen dopředné
reference, ale i zpětné reference na čísla stran.
Opakované TeXování není jediný způsob spolupráce TeXu samotného se sebou. Například kdysi jsem dělal inzertní přílohu jednoho časopisu. Během sazby TeX počítal řádky inzerátů, znal cenu za řádek v jednotlivých rubrikách i kontaktní údaje inzerentů. Kromě sazby TeX vytvořil pomocný soubor, jehož následné zpracování TeXem vytvořilo faktury pro inzerenty.
Chceme-li vytvořit rejstřík, je nejprve potřeba ve zdrojovém textu dokumentu na
odpovídajících místech vyznačit hesla, která mají být uvedena v rejstříku.
Pokud takto označený dokument zpracujeme TeXem, uloží se každý výskyt označeného
hesla do pracovního souboru společně se stranou, na které se heslo vyskytuje.
Takový soubor má obvykle příponu idx
nebo raw
. Obsahuje tzv.
„surová data“ pro rejstřík. Jedno heslo se tam může vyskytovat vícekrát, pokaždé
svázané k nějaké straně, někdy i vícekrát ke stejné straně. Takovýto soubor
se předloží procesoru pro rejstřík, který dělá v zásadě dva kroky. Nejprve
sloučí různé výskyty stejných hesel do hesla jediného, vedle kterého nyní napíše
seznam stran, na kterých se heslo vyskytuje. Při této příležitosti zjednoduší
seznam stran, tj. neopakuje stejné strany a ze souvislých posloupností stran
(25, 26, 27) udělá intervaly (25–27). V druhém kroku procesor pro
rejstřík seřadí hesla podle abecedy a uloží je do výstupního souboru
s vhodným TeXovým označkováním tak, že soubor může následně přečíst TeX
a sestavit z toho rejstřík.
Procesorem pro rejstřík je v případě TeXu už dlouhá léta program
MakeIndex. Od roku 1998 je pak k dispozici
i novější procesor xindy
(fleXible INDex
sYstem), který je postaven na konfiguračních souborech ala lisp a umí
daleko více věcí: respektuje pravidla řazení mnoha jazyků, dokáže pracovat
i s jinými různě uspořádanými odkazovými údaji (nejen s čísly stran)
a je určen jako procesor pro hypoteticky libovolný systém na přípravu
dokumentů. Jeho použití pro TeX je jen jedna možnost.
Protože MakeIndex se nedokázal nikdy pořádně vypořádat s českým abecedním
řazením, byl pro češtinu vytvořen modifikovaný program csindex
.
V současné době se domnívám, že jej dokáže plně nahradit program
xindy
. České abecední řazení není nic jednoduchého. Není zde jen
dvojhláska ch, ale používá se sofistikovaný tříprůchodový systém. Kdysi dávno jsem
to popsal ve svém článku.
Tvorba rejstříku je tedy příkladem spolupráce TeXu s externím programem. Nicméně externí program není nezbytně nutný. Například OPmac má rejstřík včetně abecedního řazení dle angličtiny nebo češtiny (slovenštiny) implementován na úrovni maker TeXu. Podobně rejstříky v ConTeXtu jsou udělané pomocí lua skriptů a maker TeXu. Sestavování rejstříků pro LaTeX přímo v makrojazyku TeXu vytvořil také Petr Březina a popsal to v článku pro Zpravodaj. Vyšel přitom z maker pro řazení, které jsem vytvořil pro balíček DocByTeX určený k dokumentování softwarových projektů. V tomto balíčku jsem asi poprvé TeXové veřejnosti předvedl možnost řazení dle abecedy přímo pomocí TeXových maker. Je zde použit algoritmus merge-sort, který do maker TeXu přepsal můj syn Mirek.
Lidé mají bibliografické záznamy, které chtějí citovat, uloženy v databázích. Pro potřeby konkrétní odborné práce je třeba z databáze vybrat jen odpovídající záznamy, údaje v nich správně uvést dle zvyklostí časopisu nebo dle normy a setřídit je. Na to se používá externí program, který vygeneruje potřebné údaje pro TeX. Od pradávna je tímto programem BibTeX, který vytvořil Oren Patashnik. Nově se začíná používat Biber.
Principy tvorby bibliografických odkazů a citací popíšu na případě BibTeXu.
Databázové údaje jsou uloženy v textových souborech s příponou
bib
, kde jeden záznam může vypadat například takto:
@BOOK{ tbn, author = {Olšák, Petr}, title = {{\TeX}book naruby}, publisher = {Konvoj}, address = {Brno}, year = {2001}, isbn = {80-7302-007-6}, url = {http://petr.olsak.net/tbn.html}, }
Slovo @BOOK
udává typ záznamu, podle kterého se pozná, které údaje
jsou povinné a které jsou dobrovolné. Dále následuje lejblík
, který
se použije v místě odkazu jako argument příkazu \cite
. Jakmile je
práce napsaná, vyskytuje se v ní na mnoha místech \cite
s lejblíky. Tyto lejblíky TeX při zpracování dokumentu vloží do pracovního
souboru s příponou aux
. Ve zdrojovém textu dokumentu je také třeba
dát vzkaz BibTeXu, jaký má použít soubor s databází bib
a jaký
bibliografický styl bst
. Konkrétní styl je většinou vyžadován
nakladatelem a ovlivní formátování odkazů i seznamu literatury. Všechny
tyto vzkazy TeX přestěhuje do souboru aux
, odkud si je přečte BibTeX.
V dalším kroku se spustí BibTeX, jehož činnost je zhruba následující:
aux
a dozví se z něj, co má
dělat.bib
souboru jen záznamy citované
v dokumentu.bbl
se seznamem literatury označkovaný TeXovými
značkami pro zpracování TeXem.Po BibTeXu je třeba ještě dvakrát spustit zpracování dokumentu TeXem, protože
v místě \cite
jsou dopředné odkazy. Po prvním (celkově už druhém)
zpracování dokumentu jsou v místech \cite
otazníčky a případná
čísla nebo značky se TeX dozví až během zpracování seznamu literatury při čtení
bbl
souboru na konci dokumentu. Potřebná data uloží do pracovního
souboru. Teprve další (celkově třetí) zpracování TeXem vytvoří dokument včetně
správných odkazů.
Z přehledu činností BibTeXu plyne, že na bibliografickém stylu závisí několik věcí:
author
, který může obsahovat více autorů oddělených spojkou
and
, přitom každý autor může mít více jmen, před příjmením mohou být
různé shluky písmen (jako třeba von). To vše BibTeX analyzuje a dále dle
stylu rozhodne, kolik autorů uvede (než to vzdá a napíše třeba et al.),
jakým způsobem bude autory oddělovat, v jakém pořadí bude psát jména,
příjmení, zda bude jména zkracovat, zda bude příjmení psát verzálkami či
kapitálkami atd. Dále dle pokynu stylu kontroluje v závislosti na typu
záznamu, zda jsou všechny povinné údaje přítomné, vytiskne do bbl
souboru údaje ve stanoveném pořadí a formátování a oddělí je stanovenou
interpunkcí.V seznamech literatury se setkáváme s babylónem jazyků, ve kterém nějak prosvítá i jazyk vnějšího dokumentu. Podle pravidel jakého jazyka se má řadit, jaká slova zůstávají součástí záznamu a jaká se překládají do jazyka vnějšího dokumentu, to vše by měl řešit bibliografický styl. V současné době dochází k obřímu nárustu počtu odborných publikací, je publikován a citován každý štěk z důvodu, že vědci jsou často financováni dle kvantity publikací a citací. Tím se násobně zvýšily nároky na manipulaci s bibliografickými záznamy. Starodávný BibTeX přestává stíhat. Jeho stylové soubory jsou napsané v něčem podobném, jako je jazyk Forth, což je poměrně šílený postfixový jazyk. Takže do BibTeXového stylu dnes dokáže dloubnout jen opravdový odvážlivec nebo masochista.
Existují pokusy o reinkarnaci BibTeXu v podobě programu
bibtex8, který rozšiřuje ASCII
na 8bitové kódování. Čte navíc konfigurační soubor csf
s deklarací způsobu abecedního řazení. Dalším pokusem je program
bibtexu, který umí UTF-8 a řazení probíhá
pomocí knihovny ICU. Projekt ale zůstal v nedokončeném a zřejmě nefunkčním
stavu. Dále je zde bibulous, který pracuje
v Unicode a je to přepis BibTeXu pomocí Pythonu. Tím je umožněno
programovaní bibliografických stylů daleko pohodlněji. A konečně je tu již
zmíněný projekt Biber, který umí sice
daleko více, ale opustil původní jednoduchost. Očekává konfigurační soubory
v XML. S Biberem spolupracuje poměrně komplikovaný soubor TeXových maker
biblatex.sty. Spoluráce TeXu s Biberem je
v zásadě stejná, jako s BibTeXem, jen bohužel makra TeXu musí navíc
vytvářet složité konfigurační soubory v jazyce XML. LaTeXový uživatel na to má
hotové řešení v podobě biblatex.sty, ale uživatelé jiných formátů mají zatím
smůlu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
touch dokument.ref cp dokument.ref dokument.bak csplain dokument diff -q dokument.bak dokument.ref || echo NEKONZISTENCE ODKAZU, TeXuj znovaNebo se totéž dá řešit na úrovni maker TeXu, což je popsáno například na OPmac-tricks. LaTeXisté na to budou mít asi nějaký balíček, ovšem to jsem nikdy nehledal.
Při použití plain mi připadá nejlepší šáhnout po balíčku Librarian.Můžete, prosím, podrobněji rozvést, co máte na mysli? Toto jméno se na internetu vyskytuje ve více významech a nedaří se mi dohledat, o co jde. Přitom únik od bibTeXu k jednoduchosti mě zajímá. Pro informaci: tento týden jsem vyjednal s lidmi na citace.com přidání exportu do TeXu (měli zatím jen nabídku exportu do BibTeXu). Jejich portál se snaží dodržet normu ISO 960, umí to dohledat údaje podle ISBN nebo DOI. To je fajn. Ovšem kopíruje to českou normu s předpokladem vložení do českého dokumentu, takže anglicky publikující jedinci to asi nemohou jednoduše použít.
Mám na mysli tento balíček: http://www.ctan.org/pkg/librarianPodíval jsem se na ten balíček a přesně splňuje očekávání, které jsem dlouho hledal. Je to skvělé, bombastické. Kdysi před mnoha lety jsem taky přemýšlel o možném přímém čtení bib souborů TeXovými makry, ale vzhledem k různým zrůdnostem jazyka Scribe (někdy uvozovky, jindy svorky, malá a velká písmena a hlavně: manipulace se stringy na úrovni bib souborů) jsem to vzdal. Přitom autor libraian balíčku Paul Isambert použil geniální myšlenku, která mě tehdy nenapadla: vybodnout se na manipulaci se stringy v bib souborech. Kdo by to potřeboval, když může použít TeX, že. Neodolal jsem, a vytvořil jsem hned za použití librarian verzi maker pro OPmac umožňující psát přehledné bibliografické styly. První verzi jsem dnes zveřejnil. Můžete se na to podívat na opmac-bib.tex a opmac-bib-simple.tex.
\newdimen\margin \margin=1pt % okraj, abychom si nedřízli mírné přetahy \pdfhorigin=\margin \pdfvorigin=\margin % horní a levý okraj \def\outtext#1{\setbox0=\hbox{#1} % nakrmíme box 0 \ifdim\wd0>\hsize % je-li text delší než \hsize, přelomíme ho do odstavce \setbox0=\vbox{\noindent\unhbox0}\fi \pdfpageheight=\ht0 \advance\pdfpageheight by\dp0 \pdfpagewidth=\wd0 % nastavení velikosti papíru dle velikosti boxu \advance\pdfpagewidth by2\margin \advance\pdfpageheight by2\margin % přidání okraje \shipout\box0 % box vypudíme do stránky } \outtext{Aha} \outtext{Ouha, to je delší} \outtext{Ha, to je dlouhé, dlouhé tak, že to obsadí více řádků textu, takže je potřeba napsat něco skutečně dlouhého, abychom to vyzkoušeli.} \end