PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makro und Zählernamen generieren



Mathias
24-11-2012, 11:57
Hallo,

ich frage mich ob es in LaTeX möglich Namen für Makro und Zähler zu generien bzw. einen Makro / Zähler ein Makro / Zähler mittles \def zuzuweisen und das Makro / der Zähler der zugewiesen wird, wird aus einen Wert bestimmt.

Kurzes Beispiel was ich gerne möchte:



\documentclass[10pt, a4paper, twoside]{article}

\newcommand{\AusgabeUndText}[2]{%
#1 und #2%
}%
\newcommand{\AusgabeOderText}[2]{%
#1 oder #2%
}%
\newcommand{\AusgabeAusfuehren}[2]{}

\newcounter{AusgabeUndLaenge}%
\setcounter{AusgabeUndLaenge}{3}%
\newcounter{AusgabeOderLaenge}%
\setcounter{AusgabeOderLaenge}{4}%
\newcounter{AusgabeLaengeAusfuehren}%

\newcommand{\WeiseMakroUndLaengezu}[1]{%
% das hier soll den Makronamen ergeben
\def\AusgabeAusfuehren#1#2{Ausgabe#1Text{#1}{#2}}
% diese Beiden sollen diese sein
% dieses #1 der
% Paramenter von
% WeiseMakroUndLaengezu
% ebenfalls gleiches Prinzip
\setcounter{AusgabeLaengeAusfuehren}{\value{Ausgab e#1Laenge}
}%

\newcommand{\TueWasMitDenWerten}{
% Tut was mit \AusgabeAusfuehren und AusgabeLaengeAusfuehren
}

\begin{document}
...
\WeiseMakroUndLaengezu{und}
\TueWasMitDenWerten
...
\WeiseMakroUndLaengezu{oder}
\TueWasMitDenWerten
...
\end{document}


Kurzer Hintergrund dazu: Im eigentlichen Projekt, habe ich einige Tabellen mit verschiedener Anzahl Spalten und Zeilen die ich mir generiere und mit dem Makro \WeiseMakroUndLaengezu können ich mir ettliche immer gleichartige Zuweisungen sparen und falls ich da doch noch mal was erweitere, hätte ich alles nur einmal und an einen Punkt.

Kurze Nebenfrage noch: Habe für die Anzahl der Spalten bisher leider jede Menge Befehle dieser Art


\newcommand{\TabGeraeteBreiten}{%
\begin{tabularx}{\textwidth}{X||C||C||C||C||C||C}%
}% Ende Tab Geraete Breiten


Mir wäre es deutlich lieber wenn ich stattdessen sowas in der Art machen könnte:



\newcommand{\TabGeraeteBreiten}{%
\begin{tabularx}{\textwidth}{\BefehlDerDieGewuensc hteSpaltenInfoAusgibt}%
%damit zum Beispiel die Anzahl der Spalten dynamisch festlegbar ist und ich mich nicht bei jeder dieser Makros immer wieder || angeben muss, könnte ich doch mal global dann anders haben wollen
}% Ende Tab Geraete Breiten


An der Stelle werden aber keine Makros akzeptiert.

Grüße

Mathias

Lilliane
24-11-2012, 12:23
Hallo Mathias,



Kurze Nebenfrage noch: Habe für die Anzahl der Spalten bisher leider jede Menge Befehle dieser Art


\newcommand{\TabGeraeteBreiten}{%
\begin{tabularx}{\textwidth}{X||C||C||C||C||C||C}%
}% Ende Tab Geraete Breiten


Mir wäre es deutlich lieber wenn ich stattdessen sowas in der Art machen könnte:



\newcommand{\TabGeraeteBreiten}{%
\begin{tabularx}{\textwidth}{\BefehlDerDieGewuensc hteSpaltenInfoAusgibt}%
%damit zum Beispiel die Anzahl der Spalten dynamisch festlegbar ist und ich mich nicht bei jeder dieser Makros immer wieder || angeben muss, könnte ich doch mal global dann anders haben wollen
}% Ende Tab Geraete Breiten



Du kannst die Anzahl Wiederholungen von Tabellenspalten kürzer schreiben:
LaTeX-Wörterbuch: tabular - Wiederholung von Spaltentypen (http://de.wikibooks.org/wiki/LaTeX-W%C3%B6rterbuch:_tabular#Wiederholung_von_Spaltent ypen)

\begin{tabular}{r*{4}{|c}}
% ist das gleiche wie
\begin{tabular}{r|c|c|c|c}


Wenn Du die Spaltenanzahl dynamisch änderst, musst Du doch auch die Anzahl Einträge mit den &-Zeichen als Spaltentrenner entsprechend ändern. Da versteh ich noch nicht so ganz, was Du dynamisieren willst. Oder geht es um die vertikalen Linien, die Du als Spaltentrenner einfügst?

Grundsätzlich sollte auf vertikale Linien in Tabellen verzichtet werden (vgl. booktabs-de-pdf (http://mirror.ctan.org/macros/latex/contrib/booktabs-de/booktabs-de.pdf), Abschnitt 2 "Das Layout formaler Tabellen").

VG

Lilly

u_fischer
24-11-2012, 12:30
Bei deiner ersten Frage suchst du \csname Ausgabe#1Laenge\endcsname.

Bei "\BefehlDerDieGewuenschteSpaltenInfoAusgibt" solltest du es mit \newcolumntype aus dem array-Paket versuchen.

Mathias
03-12-2012, 19:08
Danke für die Hinweise.
Bin die letzten Tage leider nicht dazu gekommen dies auszuprobieren.
Werde es aber schleunigst nachholen.