Quiq::TeX::Code - Generator für TeX Code
Quiq::Hash
Ein Objekt der Klasse repräsentiert einen TeX Code-Generator. Mit den Methoden der Klasse kann aus einem Perl-Programm heraus TeX-Code erzeugt werden.
$t = $class->new;
Instantiiere einen TeX Code-Generator und liefere eine Referenz auf dieses Objekt zurück.
$code = $t->c($fmt,@args,@opts);
Codezeile mit sprintf Formatelementen.
Argumente, die für die Formatelemente in $fmt eingesetzt werden. Kommt eine Arrayreferenz vor, wird diese zu einem kommaseparierten String expandiert.
Beende den Code mit $n Zeilenumbrüchen.
Beginne den Code mit $n Zeilenumbrüchen.
TeX Code (String)
Erzeuge eine TeX Codezeile und liefere das Resultat zurück.
Makro mit Option und Parameter
$documentClass = 'article'; $fontSize = '12pt'; ... $t->c('\documentclass[%s]{%s}',$fontSize,$documentClass);
produziert
\documentclass[12pt]{article}\n
Expansion von Array-Parameter
my @opt; push @opt,'labelsep=colon'; push @opt,'labelfont=bf'; push @opt,'skip=1.5ex'; $t->c('\usepackage[%s]{caption}',\@opt);
\usepackage[labelsep=colon,labelfont=bf,skip=1.5ex]{caption}
$code = $t->ci($fmt,@args,@opts);
Argumente, die in den Formatstring eingesetzt werden. Kommt unter den Argumenten eine Arrayreferenz vor, wird diese zu einem kommaseparierten String expandiert.
Erzeuge TeX Code und liefere das Resultat zurück. Die Methode ist identisch zu Methode $t->c(), nur dass per Default kein Newline am Ende des Code hinzugefügt wird. Das i im Methodennamen steht für "inline".
i
Vergleich von $t->ci(), sprintf(), $t->c()
$t->ci('\thead[%sb]{%s}','c','Ein Text');
ist identisch zu
sprintf '\thead[%sb]{%s}','c','Ein Text';
$t->c('\thead[%sb]{%s}','c','Ein Text',-nl=>0);
und produziert
\thead[cb]{Ein Text}
$code = $t->macro($name,@args);
Newline, füge $n Zeilenumbrüche am Ende hinzu.
Füge eine Option/Optionsliste [...] hinzu. Ein Array wird in eine kommaseparierte Liste von Werten übersetzt.
Füge einen Parameter/eine Parameterliste {...} hinzu. Ein Array wird in eine kommaseparierte Liste von Werten übersetzt.
Preceeding newline, setze $n Zeilenumbrüche an den Anfang.
Erzeuge ein TeX Macro und liefere den resultierenden Code zurück. Diese Methode zeichnet sich gegenüber den Methoden $t->c() und $t->ci() dadurch aus, dass undefinierte/leere Optionen und Parameter vollständig weggelassen werden.
Macro ohne Argumente
$t->macro('\LaTeX');
\LaTeX
Kommando mit undefiniertem Argument
$t->macro('\LaTeX',-p=>undef);
Macro mit Leerstring-Argument
$t->macro('\LaTeX',-p=>'');
\LaTeX{}
Macro mit leerer Optionsliste und Parameter
@opt = (); $t->macro('\documentclass',-o=>\@opt,-p=>'article');
\documentclass{article}
Macro mit Opton und Parameter
$t->macro('\documentclass', -o => '12pt', -p => 'article', );
\documentclass[12pt]{article}
Macro mit Parameter und mehreren Optionen (Variante 1)
$t->macro('\documentclass', -o => 'a4wide,12pt', -p => 'article', );
\documentclass[a4wide,12pt]{article}
Macro mit Parameter und mehreren Optionen (Variante 2)
@opt = ('a4wide','12pt'); $t->macro('\documentclass', -o => \@opt, -p => 'article', );
$code = $l->comment($text,@opt);
Füge $n Zeilenumbrüche am Ende hinzu.
Setze $n Zeilenumbrüche an den Anfang.
Erzeuge einen TeX-Kommentar und liefere den resultierenden Code zurück.
Kommentar erzeugen
$l->comment("Dies ist\nein Kommentar");
% Dies ist % ein Kommentar
$newLength = $l->modifyLength($length,$expr);
Eine einfache TeX-Länge. Beispiel: '1ex'.
Ein arithmetischer Ausdruck, der auf den Zahlenwert der Länge angewendet wird. Beispiel: '*2' (multipliziere Länge mit 2).
TeX-Länge (String)
Wende den arithmetischen Ausdruck $expr auf TeX-Länge $length an und liefere das Resultat zurück. Leerstring oder undef werden unverändert geliefert.
undef
$l->modifyLength('1.5ex','*1.5'); # 2.25ex
$length = $this->toLength($val);
Länge, die in die TeX-Länge umgerechnet wird.
Keine Angabe:
$class->toLength(undef); # undef
Angabe in Pixeln ohne Einheit:
$class->toLength(100); # '75pt'
Angabe in Pixeln mit Einheit:
$class->toLength('100px'); # '75pt'
Alle anderen Werte bleiben unverändert:
$class->toLength($val); # $val
1.159
Frank Seitz, http://fseitz.de/
Copyright (C) 2019 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.