NAME
Quiq::TeX::Code - Generator für TeX Code
BASE CLASS
DESCRIPTION
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.
METHODS
Konstruktor
new() - Instantiiere TeX Code-Generator
Synopsis
$t = $class->new;
Description
Instantiiere einen TeX Code-Generator und liefere eine Referenz auf dieses Objekt zurück.
Objektmethoden
c() - Erzeuge TeX Codezeile
Synopsis
$code = $t->c($fmt,@args,@opts);
Arguments
- $fmt
-
Codezeile mit sprintf Formatelementen.
- @args
-
Argumente, die für die Formatelemente in $fmt eingesetzt werden. Kommt eine Arrayreferenz vor, wird diese zu einem kommaseparierten String expandiert.
Options
- -nl => $n (Default: 1)
-
Beende den Code mit $n Zeilenumbrüchen.
- -pnl => $n (Default: 0)
-
Beginne den Code mit $n Zeilenumbrüchen.
Returns
TeX Code (String)
Description
Erzeuge eine TeX Codezeile und liefere das Resultat zurück.
Example
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);
produziert
\usepackage[labelsep=colon,labelfont=bf,skip=1.5ex]{caption}
ci() - Erzeuge TeX Code inline
Synopsis
$code = $t->ci($fmt,@args,@opts);
Arguments
- $fmt
-
Codezeile mit sprintf Formatelementen.
- @args
-
Argumente, die in den Formatstring eingesetzt werden. Kommt unter den Argumenten eine Arrayreferenz vor, wird diese zu einem kommaseparierten String expandiert.
Options
Returns
TeX Code (String)
Description
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".
Example
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';
ist identisch zu
$t->c('\thead[%sb]{%s}','c','Ein Text',-nl=>0);
und produziert
\thead[cb]{Ein Text}
macro() - Erzeuge TeX Macro
Synopsis
$code = $t->macro($name,@args);
Options
- -nl => $n (Default: 1)
-
Newline, füge $n Zeilenumbrüche am Ende hinzu.
- -o => $options
- -o => \@options
-
Füge eine Option/Optionsliste [...] hinzu. Ein Array wird in eine kommaseparierte Liste von Werten übersetzt.
- -p => $parameters
- -p => \@parameters
-
Füge einen Parameter/eine Parameterliste {...} hinzu. Ein Array wird in eine kommaseparierte Liste von Werten übersetzt.
- -pnl => $n (Default: 0)
-
Preceeding newline, setze $n Zeilenumbrüche an den Anfang.
Description
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.
Examples
Macro ohne Argumente
$t->macro('\LaTeX');
produziert
\LaTeX
Kommando mit undefiniertem Argument
$t->macro('\LaTeX',-p=>undef);
produziert
\LaTeX
Macro mit Leerstring-Argument
$t->macro('\LaTeX',-p=>'');
produziert
\LaTeX{}
Macro mit leerer Optionsliste und Parameter
@opt = ();
$t->macro('\documentclass',-o=>\@opt,-p=>'article');
produziert
\documentclass{article}
Macro mit Opton und Parameter
$t->macro('\documentclass',
-o => '12pt',
-p => 'article',
);
produziert
\documentclass[12pt]{article}
Macro mit Parameter und mehreren Optionen (Variante 1)
$t->macro('\documentclass',
-o => 'a4wide,12pt',
-p => 'article',
);
produziert
\documentclass[a4wide,12pt]{article}
Macro mit Parameter und mehreren Optionen (Variante 2)
@opt = ('a4wide','12pt');
$t->macro('\documentclass',
-o => \@opt,
-p => 'article',
);
produziert
\documentclass[a4wide,12pt]{article}
comment() - Erzeuge TeX-Kommentar
Synopsis
$code = $l->comment($text,@opt);
Options
- -nl => $n (Default: 1)
-
Füge $n Zeilenumbrüche am Ende hinzu.
- -pnl => $n (Default: 0)
-
Setze $n Zeilenumbrüche an den Anfang.
Description
Erzeuge einen TeX-Kommentar und liefere den resultierenden Code zurück.
Examples
Kommentar erzeugen
$l->comment("Dies ist\nein Kommentar");
produziert
% Dies ist
% ein Kommentar
modifyLength() - Wende Berechnung auf Länge an
Synopsis
$newLength = $l->modifyLength($length,$expr);
Arguments
- $length
-
Eine einfache TeX-Länge. Beispiel: '1ex'.
- $expr
-
Ein arithmetischer Ausdruck, der auf den Zahlenwert der Länge angewendet wird. Beispiel: '*2' (multipliziere Länge mit 2).
Returns
TeX-Länge (String)
Description
Wende den arithmetischen Ausdruck $expr auf TeX-Länge $length an und liefere das Resultat zurück. Leerstring oder undef
werden unverändert geliefert.
Example
$l->modifyLength('1.5ex','*1.5');
# 2.25ex
toLength() - Wandele Länge in TeX-Länge
Synopsis
$length = $this->toLength($val);
Arguments
Returns
TeX-Länge (String)
Examples
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
VERSION
1.220
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.