OPmac

OPmac - rozšiřující makra plain TeXu

Petr Olšák, 2013, 2014

en English

opmac-letak.pdf

Další odkazy:
Tipy, triky, návody
FTP adresář

OPmac jsou jednoduchá doplňující makra k plainTeXu umožňující uživatelům základní LaTeXovou funkcionalitu: změny velikosti písma, automatickou tvorbu obsahu a rejstříku, práci s bib databázemi, referencemi, možnost proložení referencí hyperlinkovými odkazy atd.

opmac.tex
opmac-u.pdf
opmac-d.pdf
opmac-u.tex
opmac-d.tex

Balík OPmac se skládá z těchto souborů: opmac.tex (makro), opmac-u.pdf (uživatelská dokumentace napsaná za použití opmac), opmac-d.pdf (technická dokumentace napsaná za použítí DocByTeXu), opmac-u.tex a opmac-d.tex (zdrojové soubory k dokumentaci).

Hlavní zásady, kterými jsem se při tvorbě tohoto balíku maker řídil:

  • V jednoduchosti je síla.
  • Makra nejsou univerzální, ale jsou čitelná a srozumitelná.
  • Uživatel si makra může snadno předefinovat k obrazu svému.

Každé makro je napsáno s cílem co největší srozumitelnosti pro lidi, kteří to budou chtít číst a měnit. Je k dispozici uživatelská dokumentace (20 stránek) a rozsáhlá technická dokumentace (59 stránek), která může sloužit jako učebnice programování maker v plainTeXu.

Balík OPmac nabízí podobně jako LaTeX autorům textů rozhraní, tj. smluvenou sadu značek na vymezení struktury dokumentu. Je jiná, než v LaTeXu, možná nabídne napsat zdrojový text článku poněkud přehledněji a oku více lahodícím způsobem. Balík OPmac ovšem neřeší typografický vzhled dokumentu. Bez doplňujících maker vyleze jednoduchý střízlivý dokument. Předpokládá se, že autor dodatečných plainTeXových maker ušije vzhled dokumentu na míru konkrétnímu požadavku.

Následuje stručný přehled vlastností makra opmac.tex. Po úvodních řádcích v dokumentu:

   \chyph  % use format csplain
   \input opmac

jsou k dispozici (zhruba) následující příkazy:

   \tit   Název titulu (ukončený prázdným řádkem)
   \chap  Název kapitoly (ukončený prázdným řádkem)
   \sec   Název sekce (ukončený prázdným řádkem)
   \secc  Název podsekce (ukončený prázdným řádkem)
   
   \maketoc        % generování obsahu
   \ii heslo,heslo % vložení hesel do rejstříku
   \makeindex      % generování rejstříku
   
   \label[lejblík] % umístění cíle odkazu
   \ref[lejblík]   % odkaz na kapitolu, sekci, podsekci, rovnici, ...
   \pgref[lejblík] % odkaz na stránku
   
   \caption/t      % číslovaný popisek tabulky
   \caption/f      % číslovaný popisek obrázku
   \eqmark         % číslovaná rovnice
   
   \begitems       % začátek výčtu položek
   \enditems       % konec výčtu položek
   \begtt          % začátek verbatim výpisu
   \endtt          % konec verbatim výpisu
   \activettchar X % inicializace znaku pro in-text verbatim
   \verbinput      % verbatim výpis ze souboru
   \begmulti num   % začátek vícesloupcové sazby
   \endmulti       % konec vícesloupcové sazby
   
   \cite[lejblíky]  % místo, odkud se odkazuje do seznamu literatury
   \rcite[lejblíky] % jako \cite, ale bez závorek kolem
   \sortcitations \shortcitations \nonumcitations % deklarace typu odkazů
   \bib[lejblík]   % položka v seznamu literatury
   \usebibtex{bib-báze}{bst-styl}  % použití bibTeXu pro seznam literatury
   \genbbl{bib-báze}{bst-styl}     % předgenerování seznamu literatury
   \usebbl/? bbl-base  % použití předgenerované databáze, ? in {a,b,c}
   \usebib/? (style) bib-base % přímé použití .bib databáze, ? in {s,c}
   
   \fontfam[Jméno rodiny]  % načtení fontového souboru pomocí jména rodiny
   \typosize[font-velikost/řádkování]        % nastavení velikosti sazby
   \typoscale[faktor-font/faktor-řádkování]  % škálování velikosti sazby
   \thefontsize[velikost] \thefontscale[faktor] % velikost aktuálního fontu
   
   \inspic soubor.přípona  % vložení obrázku, přípony: jpg, png, pdf
   \table{pravidlo}{data}  % makro pro tabulku

   \fnote    % poznámka pod čarou (lokální číslování na každé stránce)
   \mnote    % poznámka na okraji (pravém nebo levém podle stránky)

   \hyperlinks{barva-in}{barva-out}  % v PDF budou odkazy klikací
   \outlines{úroveň}                 % PDF bude mít záložku s obsahem

   \magscale[faktor]  % zvětšení/zmenšení sazby beze změny zlomu
   \margins/pg formát (levý,pravý,horní,dolní)jednotka  % okraje

Licence: Aby nebyl autor makra uveden do nepohody až stavu naštvanosti, je nutné v souvislosti s balíčkem OPmac nepoužívat slovo ,,licence``. V tomto odstavci jsou jediné dva výskyty tohoto slova a žádné další takové se v souvislosti s balíčkem OPmac nesmí vyskytnout. Dodržíte-li předchozí podmínku, můžete si s balíčkem OPmac dělat, co je libo.

csplain.tar.gz
ams-math.tex

Závislost: Soubor opmac.tex potřebuje přečíst soubor ams-math.tex, který je součástí csplainu od verze Nov.2012. Pokud tato verze csplainu ještě není součástí vaší TeXové distribuce, můžete si ji stáhnout zde v balíčku csplain.tar.gz.

prednaska v Brne

Vývoj: Uživatelům OPmac nabízím konzultace po emailu a uvítám hlášení o chybách. Pojďme společnými silami tomu odstranit případné mouchy a mušky. Na této stránce najdete vždy nejnovější verzi balíčku. První zveřejněná verze je beta(a)Nov.2012. První stabilní verze má označení Dec.2012 a byla zveřejněna 21. 12. 2012. Byla zařazena do csplainu a nový csplain byl zařazen do TeXlive.

starší verze

Ačkoli se snažím makra OPmac moc neměnit, někdy se najde pádný důvod pro opravu či doplnění vlastnosti. Například v červenci 2013 jsem předělal koncept maker \printchap (atd.) a přidal \nonum, v únoru a dubnu 2014 jsem rozšířil možnosti bibliografických citací. Změny ve verzích jsou popsány na konci souboru opmac.tex a současně se zveřejněním nové verze jsou vždy aktualizovány uživatelská i technická dokumentace. V dubnu 2016 jsem předefinoval \tit, \chap, \sec a \secc pomocí \eoldef, což také může spůsobit některé potíže s kompatibilitou, viz OPmac trik 0121. Pokud jste si dříve vytvořili makra, která jsou nyní s novější verzí OPmac nekompatibilní, doporučuji stáhnout starší verzi OPmac z tohoto adresáře a místo \input opmac psát např. \input opmac-may2013.

fontfam.tex
fontfam-global.tex
fontfam-catalog.tex

Doplňkový balíček fontfam umožní udržet si přehled nad sadou fontových souborů, které jsou připraveny zavést specifikoanou rodinu fontů. Uživatel může přidávat své vlastní fontové soubory a tisknout jednoduché katalogy. Balíček se při použití sekvence \fontfam zavede automaticky. Další podrobnosti jsou uvedeny v souboru fontfam.tex.

pdfuni.tex
pdfuni-article.pdf
pdfuni-article.tex

Doplňkový balíček PDFuni: Tento balíček, je-li zaveden po zavedení makra OPmac, předefinuje konverzní algoritmus pro stringy vkládané do záložek PDF dokumentů tak, že nebudou odstraňovány akcenty v českých a slovenských textech. Interně zavede konverzi do UNICODE kódovaných stringů. Podrobnější informace lze nalézt v přiloženém článku.

opmac-xetex.tex

Doplňkový balíček opmac-xetex: Tento balíček je při \input opmac zaveden automaticky, pokud je detekován XeTeX. Důvod: některé vlastnosti OPmac (hyperlinky, barvy, \inspic, záložky) jsou založeny na pdfTeXových primitivech, kterými XeTeX bohužel nedisponuje. Místo toho se XeTeX opírá o knihovnu dvipdfmx, která vyžaduje použití jistých příkazů \special. Uvedený balíček předefinovává některá makra OPmac v souladu se syntaxí dvipdfmx, aby pracovala správně s XeTeXem. Dále emuluje pomocí definic některé primitivy pdfTeXu.

opmac-luatex.tex

Doplňkový balíček opmac-luatex: Tento balíček se načte automaticky při použití LuaTeXu od verze 0.95, která opustila přímou podporu pdfTeXových primitivů. Potřebné příkazy je tedy třeba (podobně jako v opmac-xetex) dodefinovat.

opmac-bib.tex
opmac-bib-simple.tex
opmac-bib-iso690.tex
op-example.bib

Doplňkový balíček opmac-bib umožňuje přímé čtení .bib databází pouze makry TeXu, takže obchází starodávný BibTeX. Jsou tím vyřešeny problémy s nečitelnými .bst soubory a s UTF-8 kódováním, se kterým může mít BibTeX potíže. Balíček opmac-bib využívá další externí balíček librarian.tex, který je obvyklou součástí TeXových distribucí. Pomocí opmac-bib je možné snadno psát styly pro bibliografické výpisy. Jeden takový styl je v souboru opmac-bib-simple.tex. Více informací je v souboru opmac-bib.tex. Balíček opmac-bib se při použití sekvence \usebib zavede automaticky.