PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen in Latex?



bienchen
24-11-2004, 20:44
Hallo,

ich mache immer noch meine Uebung...
Gibt es die Möglichkeit in Latex Variablen zu deklarieren?
Angelehnt an die Bash würde ich mir folgendes vorstellen:
NO=5
\input{Aufgabe${NO}.1/aufgabe${NO}.1.tex}
\input{Aufgabe${NO}.2/aufgabe${NO}.2.tex}
\input{Aufgabe${NO}.3/aufgabe${NO}.3.tex}

Geht sowas?

mfg,

Bienchen

edico
24-11-2004, 22:17
Ich kann nicht sagen, dass ich dich verstehe, was du (erreichen) willst. Das Example für die Bash ist für mich eher verwirrend - so würdest du eine bash schreiben?
Ich habe jetzt angenommen, du willst files -durchnummeriert, aber mit selbem basename- in ein main document einbinden ... dann vielleicht so:
\documentclass{scrartcl}
\usepackage{multinclude}
\def\a5{aufgabe5} % <<<<<<<<<< Variable
\begin{document}
\section*{Embedded \TeX\ file by package multinclude}
\input{\a5-1}
\input{\a5-2}
% Abgespeichert im working-dir sind die files:
% aufgabe5-1.tex, aufgabe5-2.tex, ...
% Remember that in this case all embedded documents must have comment out
% documentclass{} and \begin{docuemnt}, \end{document}.
\end{document}
edico

blubb
25-11-2004, 09:29
Um mal etwas zu verwirren ein kleiner Exkurs :D

Ich sollte glaub mal die l2tabu in meine Signatur aufnehmen
http://texcatalogue.sarovar.org/entries/l2tabu.html
dort wird von \def abgeraten.

> \def\a5{aufgabe5}
Das definiert ein Makro \a, das zwingend als ersten Parameter eine 5 erwartet.
gibt man \a3 ein bekommt man:

! Use of \a doesn't match its definition.
Grund: Das gerade definierte \a will eine 5.

Definiert man das mit \newcommand bekommt man gleich eine Fehlermeldung.

Neben der besseren Prüfung gibt \newcommand auch die Sicherheit, das man nicht aus Versehen ein bestehendes Makro überschreibt.
Deshalb: Kein \def, bitte \newcommand nutzen.

Hintergrund:
\def ist TeX, \newcommand ist \LaTeX

Und mit \def kann man auch so nette Sachen machen wie

\def\mydatum#1-#2-#3!{Heute ist der #3. #2. #1}
\mydatum 2004-11-25!
Ergebnis: Heute ist der 25. 11. 2004

edico
25-11-2004, 11:10
Hej blubb,
du magst ja recht haben, solange Sterilität das oberste Gebot ist.
Allerdings halt ich mich an M.Trettin selbst, der meint:
Wer genau weiss, warum er \def benötigt, weiss auch um dessen Nach- und Vorteile und kann diesen Punkt getrost ignorieren.
... und an Dante und stricke auch schon mal mit \def anstatt mit \newcommand, wenn's dann der Sache dient. Die Problemlösung stehe im Vordergrund, und so gelte jeder Hack, der keinen Absturz provoziert ;-)
Dass es häufig (meistens) mehrere Wege gibt, ist sicherlich wahr.
Du kannst den Link gerne aufnehmen, kann ja nicht schaden, ab und zu mal hinzuschauen.
edico
P.S. Überhaupt mich interessiert mal, welche Fehlermeldungen du bei o.g. eXample bekommst.

blubb
25-11-2004, 11:53
Für mich hat das weniger mit Sterilität zu tun, sondern damit, das Leser des Forums den Eindruck kriegen könnten \def\a5 definiert ein makro a5. Dem ist nicht so, es wird \a definiert.


Wer genau weiss, warum er \def benötigt, weiss auch um dessen Nach- und Vorteile und kann diesen Punkt getrost ignorieren.
Und auf die Probleme wies ich hin, weil ich davon ausgehe, mancher Leser hier kennt die nicht.


P.S. Überhaupt mich interessiert mal, welche Fehlermeldungen du bei o.g. eXample bekommst.
Mein \def-Beispiel? -- kein Fehler
Dein Beispiel? -- Da fehlt mir schon das Paket multinclude.

Ich habe auch nicht gesagt, das dein Beispiel nicht geht, nur das die Verwendung der Lösung unerwartete Ergebnisse zeigen kann.

Spätestens, wenn jemand versucht neben \a5 auch ein \a3 zu definieren gibt es Probleme:

\documentclass{scrartcl}
\usepackage{multinclude}

\def\a3{aufgabe3} % definiert \a und erwartet dann 3
\def\a5{aufgabe5} % überschreibt \a und erwartet 5
%\def\a#1{aufgabe#1} % So ginge es

\begin{document}
\section*{Embedded \TeX\ file by package multinclude}
\input{\a3-1}
\input{\a3-2}
\input{\a5-1}
\input{\a5-2}
\end{document}


Blubb

edico
25-11-2004, 13:31
Ja, du hast völlig recht! Das war natürlich Quatsch mit der Einbindung der Zahlen in die Variable: \a5 resp. \a3! Es ginge dann so:
...
\def\afuenf{aufgabe5}
\def\adrei{aufgabe3}
...
\input{\afuenf-1}
\input{\afuenf-2}
\input{\adrei-1}
\input{\adrei-2}
....
... und das geht bei mir nicht ...!?
%\def\a#1{aufgabe#1} % So ginge es
... aber ist ja auch egal. Wir machen alles mit \newcommand.
«It is better (but not essential) to use \newcommand rather than \def because
\newcommand tells you if you are redefining something that has already been
defined. »
edico

blubb
25-11-2004, 14:42
> ... und das geht bei mir nicht ...!?
Mit afuenf etc geht das natürlich, aber eben nicht mit \a5.
(Ich nummeriere so etwas im übrigen gerne römisch, also \aV.., macht aber keinen effektiven Unterschied).