PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \ifthenelse,



tobias.vdk
08-02-2006, 13:15
Hallo

Ich versuche, das Tabellenverzeichnis durch Eingabe des neuen Befehls "\numtabverz" zu nummerieren, leider klappt das nicht. Hier ein (nicht ganz) Minimalbeispiel:

\documentclass[a4paper,12pt,oneside]{scrartcl}
\usepackage{ngerman}
\usepackage{mathptmx}
\usepackage{ifthen}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[titles]{tocloft}
\usepackage{tocbibind}

%zum Nummerieren des Verzeichnisses

\newboolean{BADNTV}
\setboolean{BADNTV}{false}
\newcommand*{\numtabverz}{\setboolean{BADNTV}{true }}

\ifthenelse{\boolean{BADNTV}}{\renewcommand{\listo ftables}{\begingroup
\tocsection
\tocchapter
\tocfile{\listtablename}{lot}
\endgroup}}
{}

% Verzeichnis erstellen

\newcommand*{\includetabverz}{%
\clearpage
\phantomsection
\listoftables
\clearpage
}

\begin{document}
\tableofcontents
\section{SectionEins}
\section{SectionZwei}
\subsection{Subsection}
\begin{table}
\caption{einmaleins}
\centering
\begin{tabular}{c|c|c}
1 & 1 & 1\\
\hline
2 & 2 & 4\\
\hline
3 & 3 & 9
\end{tabular}
\end{table}
\numtabverz
\includetabverz
\end{document}

Die Umdefinition mit dem Package 'tocbibind' ist folgendes:

\ifthenelse{\boolean{BADNTV}}{\renewcommand{\listo ftables}{\begingroup
\tocsection
\tocchapter
\tocfile{\listtablename}{lot}
\endgroup}}
{}

hat jemand ne Idee?

Tschüss Tobias

pospiech
08-02-2006, 15:48
Zum einen weiß ich nicht was du überhaupt bezwecken willst und zum anderen weiß ich von Markus Kohm das tocbibind und Koma script sich beißen. tocbibind kann dir das Layout vom Literaturverzeichnis zerschießen weil es sich nicht um Kopatibilitäten kümmert.

Matthias

rais
08-02-2006, 18:41
Hallo Tobias,
was Matthias schreibt, ist zwar richtig,


(...) Results with other classes may be problematical.
hat hier aber nichts mit Deinem Problem zu tun:
Mit \numtabverz setzt Du zwar den Wert für BADNTV auf true, wertest ihn _danach_ aber nicht mehr aus, da Du die Auswertung mit \ifthenelse bereits in der Präambel gemacht hast.
Was Du also tun könntest: setz den kompletten Block der Auswertung (also das \ifthenelse-Konstrukt) mit in die Definition für \includetabverz hinein, am Besten nach dem ersten \clearpage, dann kannst Du die \phantomsection in die bisher leere Klammer (den else-Zweig) setzen, damit \phantomsection nur dann ausgegeben wird, wenn es sich um einen nicht nummerierten Abschnitt handelt.
Jedenfalls sollte dann das Tabellenverzeichnis in Abhängigkeit von einem entsprechend gesetztem Befehl \numtabverz nummeriert werden (oder auch nicht, wenn's denn fehlt).

KOMA bietet für so etwas eigentlich die Option liststotocnumbered an.

...Und das Einmaleins hab ich mal etwas anders gelernt:D
MfG,

tobias.vdk
12-02-2006, 20:55
Hallo!

@rais: Vielen Dank! War wohl ein Denkfehler meinerseits... (ist eben keine "objektorientierte" Programmiersprache). Wegen 'liststotocnumbered': ich schreibe gerade ein Package und das soll ja mit allen Klassen kompatibel sein...

Wegen den möglichen Problemen mit KOMA: Gibt es ne andere klassenunabhängige Möglichkeit die Verzeichnisse zu nummerieren? (andere/bessere Pakete)

Tschüss Tobias

rais
12-02-2006, 23:34
Hallo Tobias,

Wegen den möglichen Problemen mit KOMA: Gibt es ne andere klassenunabhängige Möglichkeit die Verzeichnisse zu nummerieren? (andere/bessere Pakete)

Ein derartiges Paket ist mir nicht bekannt (wenn man die schiere Anzahl von bereits vorhandenen Paketen betrachtet, ist das auch nicht weiter verwunderlich), andererseits kann ich mir das nur schwerlich vorstellen, da alleine in article, book, scrartcl und scrbook der Befehl \listoftables bereits unterschiedlich definiert ist...
Um wirklich klassenunabhängig kommandogesteuert das Tabellenverzeichnis zu nummerieren, müßte man erst einmal feststellen, ob \listoftables von der verwendeten Klasse überhaupt definiert wurde - wenn dem nicht so ist, dann kann man fast davon ausgehen, daß es auch keine table-Umgebung in dieser Klasse gibt...
Und wenn's denn \listoftables gibt, stellt sich die Frage: Welche Gliederungsebenen sind von der verwendeten Klasse definiert (wenn überhaupt) - und welche soll für die Überschrift des Tabellenverzeichnisses verwendet werden?
Dann stellt sich irgendwann die Frage, was mit evtl. vorhandenen Klassenoptionen (wie liststotoc bzw. liststotocnumbered bei den KOMA-Klassen) geschehen soll...
Ganz zu schweigen von Optionen wie markuppercase oder markusedcase...

Eine "klassenunabhängige" Änderung eines Befehls, der innerhalb einer Klasse überhaupt erst definiert wird, kann es demnach praktisch nicht geben - spätestens nach Veröffentlichung der nächsten Klasse stimmt's wohlmöglich nicht mehr.;)
MfG,

tobias.vdk
13-02-2006, 15:29
Hallo!

@rais: Ja, da hast du recht. Ganz klassenunabhängig wird es wohl nie werden. Dieses Problem trat bei meinem "Projekt" auf, für meine Kommilitonen ein Paket zu erstellen, das das von der BA (Berufsakademie) vorgegebene Layout "einstellt". Da gibt es aber auch Dinge, wie z.B. die Nummerierung von Verzeichnisse, die nicht so explizit geregelt ist. Da wollte ich dem Benutzer natürlich die Möglichkeit geben - auch denen, die nicht so viel Ahnung von LaTeX haben. Dabei werden wohl die meisten genutzten Klassen articel, report, scrartcl oder scrreprt sein.

Tschüss Tobias