Vytváření svých vlastních stylů pro aplikaci Pybliographer.
Zoltán Kóta
zoltank@gmail.com
Frédéric Gobry
frederic.gobry@epfl.ch

Creative Commons Share Alike 3.0

# Nové styly

Vytvořením jednoduchého souboru XML si můžete popsat své vlastní bibliografické styly. Soubor XML by měl mít následující hlavičku:

          <?xml version="1.0"?>

Celý popis je uzavřen v párové značce <bibstyle>, jejíž obsah je stručně popsán v této kapitole. Případným zájemcům je doporučováno podívat se na odpovídající DTD, které popisuje dovolenou syntaxi podrobněji. Toto DTD najdete ve stejné složce, jako soubory s výchozími styly.

# Globální formátování

Soubor XML se stylem popisuje, jak jsou různá datová pole organizována, aby vytvořila bibliografický styl. Například může specifikovat, že článek začíná názvem článku v tučném písmu, následovaném jménem autora apod.

V současné podobě však formát XML neumí popsat nízkoúrovňové informace, např. jak by měl vypadat výstup s autorovým jménem. To se dělá odkazem na sadu funkcí v jazyce Python, seskupené v modulu. Pojďme se podívat na příklad:

      <module name="generic">
        <define field="author">full_authors</define>
        <define field="editor">first_last_full_authors</define>
        <define field="date">european_date</define>
        <define method="keys">string_keys</define>
      </module>

V tomto příkladu požadujeme, aby bylo pole author naformátováno funkcí `full_authors()`, umístěnou v modulu generic.

Takovýto modul je deklarován v souboru pybrc.py nějakým takovýmto řádkem:

    Autoload.preregister ('style','Generic','Pyblio.Style.Generic')

Přesnější definici formátovacích funkcí nejlépe pochopíte, když se podíváte například do kódu Generic.py.

# Bibliografická definice

Jakmile máte nadefinováno základní formátování, můžete popsat aspekt aktuální bibliografie následujícími značkami:

<style name="název_stylu">

Tato značka určuje aktuální styl zobrazení z bold, italic, slanted, emph (tučné, kurzíva, skloněné, zvýrazněné).

<inentry name="název_záznamu">

Tato značka uzavírá blok, který se objevuje jen v záznamech typu název_záznamu.

<notinentry name="název_záznamu">

Tato značka uzavírá blok, který se objevuje jen v záznamech, které nejsou typu název_záznamu.

<infield name="název_pole">

Tato značka uzavírá blok, který se objevuje jen když v aktuálním záznamu existuje pole název_pole.

<notinfield name="název_pole">

Tato značka uzavírá blok, který se objevuje jen když v aktuálním záznamu neexistuje pole název_pole.

<content name="název_pole"/>

Tato prázdná značka je nahrazena obsahem aktuálního pole (pokud je umístěna v bloku <infield>) nebo obsahem pole určeného atributem.

<separator>

Obsah této značky je vyhodnocen jako nic, pokud se zatím neobjevil žádný text. Je to pohodlný způsob, jak přidat oddělovat za sérii polí, aniž byste se museli strachovat ze situací, kdy pole nejsou definována.

Existující soubory se styly jsou dobrým zdrojem příkladů.

# Budoucnost formátu

V budoucnu bude tento základní formát raději nahrazen mechanismem založeným na XSL, který by měl zvládnout dohromady co dnes definice XML a moduly v jazyce python, a přitom v jediném souboru zpracovatelném analyzátorem XSL.