while mit ifelse - bezogen auf seitenzahl

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


hello_world
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Fr 21. Feb 2014, 18:08

while mit ifelse - bezogen auf seitenzahl

Beitrag von hello_world »

Hallo!
Wie schon einige wissen^^... Ich will mir ein hübsches Inhaltsverzeichnis bauen.
Es klappt ganz gut. Nur habe ich ein Problem, wenn mein Verzeichnis länger als eine Seite wird.

Es liegt folgendes vor:
-ich nutze das eso-pick packet um im Inhaltsverzeichnis mit tikz gestalten zu können.
-->die Balkenhöhen (siehe Beispielcode) passe ich "händisch" des automatischen tableofcontents an, wenn die Arbeit geschrieben ist.

Problem:
Wird das Inhaltsverzeichnis länger als eine Seite, so stellt eso-pic dort wieder das gleiche tikz Bild her. Ich will aber Farben und Balken für weitere Seiten verändern können.

Lösungsversuch:
Ich dachte, ich könnte eine while-Schleife integrieren:
1. Setze Seitenzahl auf 100 (es ist \value{page} auf 100)
2. Ich setzt nach dem Inhaltsverzeichnis die Seitenzahl auf 1

3. ich definiere in der präambel einen Befehl \inh. Da kommt rein:
3.1. eine while-Schleife für Seitennummern über 99:
\whiledo{\value{page}>99}{}{
3.2 eine if-Verzweigung in die while-Schleife:
\ifnum\value{page}=100%if zum ersten
zeichne es so
\else%else zum ersten
\ifnum\value{page}=101%if zum zweiten
zeichne es so
\else%else zum zweiten
\ifnum\value{page}=102%if zum dritten
\else Mehr Seiten habe ich nicht als Verzeichnis
\fi%Beenden drittes if
\fi%Beenden zweites if
\fi%Beenden ersets if
4. Aufrufen von \inh im Textkörper

5. Verzweifeln, weils nicht funktioniert! Fehlermeldung...



Mein Beispiel für euch. Nur eine If-Verzweigung aber selbe Fehlerausgabe:
%benutzte Packete:
\documentclass[fontsize=14pt, DIV=12,headlines=2]{scrreprt}%
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{palatino}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage[onehalfspacing]{setspace}
\setcounter{secnumdepth}{5}
\usepackage{blindtext}
\usepackage[x11names]{xcolor}
\usepackage{tikz}
\usepackage{layout}
\usepackage{eso-pic}
\usepackage{titletoc}
\usepackage{framed}
\usepackage{geometry}
\geometry{left = 3.5cm, right = 3cm,top = 2.5cm,bottom = 2.8cm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Einstellungen für Inhaltsverzeichnis - Chapter
\titlecontents{chapter}[-0.8cm]%
	{\addvspace{1cm}}%
		{%
		\raisebox{-0.2cm}[0cm][0cm]{\color{Snow1}\Huge\thecontentslabel}%
		\large\hspace{+0.5cm}%
		}%
			{%
			\large\hspace{0.5cm}%% <- Kapiteleinträge in \large
			}%
				{%
				\hfill\contentspage
				}%
					[%
					\titleline{\titlerule}%% <- horizontale Linie
					\addvspace{0.5cm}%% <- Abstand zum nächsten Eintrag
					]%


\newcommand{\inh}{%
	\setcounter{\value{page}}{100}	
\whiledo{\value{page}>99}{
	\ifnum\value{page}=100%
			\AddToShipoutPicture{%
				\begin{tikzpicture}[overlay]
%chapter1
				\fill[left color=black, right color=Firebrick1](1.3,23) rectangle (3.4,1.3);
				\fill[color=Firebrick3,opacity=0.2](1.3,23) rectangle (20.2,17.5);

				\end{tikzpicture}%
			}%Ende AddToShipoutPicture
		\else
			\AddToShipoutPicture{%
				\begin{tikzpicture}[overlay]
			%chapter6
				\fill[left color=black, right color=RoyalBlue4](1.3,23) rectangle (3.4,1.3);
				\fill[color=RoyalBlue4,opacity=0.2](1.3,23) rectangle (20.2,17.5);
				\end{tikzpicture}
			}
		\fi
		}%Ende whiledo
}%Ende \inh
%%%%%%%%%%%%%%%%%%%%%$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%$$$ N $$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%$$$$$$$$$$ E $ T $%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%$ D  K % M $$%$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%$ O % U $$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begingroup
\newgeometry{left = 3.5cm, right = 3cm,top = 7cm, bottom = 2.8cm}
\renewcommand*{\chapterpagestyle}{empty}
\renewcommand*\contentsname{\vspace{-4.5cm}}%Die Überschrift "Inhaltsverzeichnis wird hier entfernt und durch eine Verschiebung (vertikal) ersetzt. So wird der tableofcontents in den Rahmen eingepasst (Affengeil!)
\pagestyle{empty}
\inh
\tableofcontents
\clearpage
\endgroup
\ClearShipoutPicture
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setcounter{page}{1}
\chapter{So sieht eine Kapitelseite aus, das man auch noch länger machen kann}

\section{Das wird der erste große Abschnitt in dieser Arbeit}
\subsection{Das wird die erste Subsection}
\section{zweite Section dieses Tests}
\chapter{Das ist ein Farbenspiel}
\section{hallo! ich bin bunt unterstrichten!}
\chapter{Und noch ein Chapter}
\section{ölaskdjf}
\subsection{lföaksjdfa}
\subsection{alksjdföaslkfdj}
\section{ölaskdjf}
\subsection{lföaksjdfa}
\subsection{alksjdföaslkfdj}
\section{ölaskdjf}
\subsection{lföaksjdfa}
\subsection{alksjdföaslkfdj}
\chapter{kalsdjföaslkdfjdaösldkfjaösldkfjaösldkfj}
\section{öalksdfj}
\chapter{aösldkfjasödlfkja}
\section{öalksdjf}
\subsection{öalsdkfjöasdlkfj}
\end{document}
Mag LaTex keine While-IfElse Kombi, wie sie in C o.Ä. standard ist?

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Re: while mit ifelse - bezogen auf seitenzahl

Beitrag von rais »

hello_world hat geschrieben:
\newcommand{\inh}{%
	\setcounter{\value{page}}{100}	
\whiledo{\value{page}>99}{
	\ifnum\value{page}=100%
			\AddToShipoutPicture{%
				\begin{tikzpicture}[overlay]
%chapter1
				\fill[left color=black, right color=Firebrick1](1.3,23) rectangle (3.4,1.3);
				\fill[color=Firebrick3,opacity=0.2](1.3,23) rectangle (20.2,17.5);

				\end{tikzpicture}%
			}%Ende AddToShipoutPicture
		\else
			\AddToShipoutPicture{%
				\begin{tikzpicture}[overlay]
			%chapter6
				\fill[left color=black, right color=RoyalBlue4](1.3,23) rectangle (3.4,1.3);
				\fill[color=RoyalBlue4,opacity=0.2](1.3,23) rectangle (20.2,17.5);
				\end{tikzpicture}
			}
		\fi
		}%Ende whiledo
}%Ende \inh
wie soll hier jemals das Abbruchkriterium (\value{page} unter 100) erreicht werden?

MfG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

Besserwisser

Beitrag von Besserwisser »

Ich habe zwar keine Ahnung, was Du da tatsächlich vor hast, aber wenn Du eine while-Schleife über page machen willst, dann musst Du page in der Schleife auch verändern …

Außerdem sei darauf hingewiesen, dass eso-pic bei \AddToShipoutPicture den Inhalt auf jeder Seite ausgibt, nicht nur auf der aktuellen Seite. Außerdem kennt Tikz auch einen page-node, so dass man im Zusammenhang mit Tikz eso-pic meist nicht benötigt. Aber wie gesagt: Ich habe keine Ahnung, was Du tatsächlich vor hast, weil Du uns das nämlich hier nicht erzählt hast.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Du rufst deinen Befehl auf Seite 1 auf. Da kannst du soviele Whileschleifen machen, wie du willst, der Inhalt wandert nicht von alleine zu den nächsten Seiten.

Verlagere des Test auf die Seitennummer *in* den Inhalt von \AddToShipoutPicture - der wird doch auf jeder Seite ausgeführt.
\documentclass{scrreprt}%
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[x11names]{xcolor}
\usepackage{tikz}

\usepackage{eso-pic}
\AddToShipoutPicture{%
    \AtPageLowerLeft{%
    \ifcase\value{page}
       %Seite 0
      \or %seite 1
             \begin{tikzpicture}[overlay]
             \fill[left color=black, right color=Firebrick1](1.3,23) rectangle (3.4,1.3);
             \fill[color=Firebrick3,opacity=0.2](1.3,23) rectangle (20.2,17.5);
             \end{tikzpicture}%
       \or
             \begin{tikzpicture}[overlay]
             \fill[left color=black, right color=RoyalBlue4](1.3,23) rectangle (3.4,1.3);
             \fill[color=RoyalBlue4,opacity=0.2](1.3,23) rectangle (20.2,17.5);
             \end{tikzpicture}
        \or  %usw
             \begin{tikzpicture}[overlay]
             \fill[left color=black, right color=yellow](1.3,23) rectangle (3.4,1.3);
             \fill[color=RoyalBlue4,opacity=0.2](1.3,23) rectangle (20.2,17.5);
             \end{tikzpicture}
       \fi}}
       
\begin{document}


\chapter{So sieht eine Kapitelseite aus, das man auch noch länger machen kann}

\section{Das wird der erste große Abschnitt in dieser Arbeit}
\subsection{Das wird die erste Subsection}
\section{zweite Section dieses Tests}
\addtocontents{toc}{\protect\newpage}
\chapter{Das ist ein Farbenspiel}
\section{hallo! ich bin bunt unterstrichten!}
\chapter{Und noch ein Chapter}
\section{ölaskdjf}
\subsection{lföaksjdfa}
\subsection{alksjdföaslkfdj}
\section{ölaskdjf}
\subsection{lföaksjdfa}
\subsection{alksjdföaslkfdj}
\section{ölaskdjf}
\subsection{lföaksjdfa}
\subsection{alksjdföaslkfdj}
\chapter{kalsdjföaslkdfjdaösldkfjaösldkfjaösldkfj}
\section{öalksdfj}
\chapter{aösldkfjasödlfkja}
\section{öalksdjf}
\subsection{öalsdkfjöasdlkfj}
\end{document}

hello_world
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Fr 21. Feb 2014, 18:08

Beitrag von hello_world »

@rais:
ich dachte, wenn ich das in eine Umgebung im Dokument setze, nach der \setcounter{page}{1} steht, würde es abbrechen.
@Besserwisser:
Was ich vorhabe ist, eine Inhaltsangabe zu erstellen, die einen Rahmen besitzt und in der Balken für die einzelnen Kapitel (pro Kapitel eine Farbe) am linken Rand stehen. Siehe Anhang. Es sollte alles möglichst dynamisch programmiert sein.
\AddToShipouPicture gibt es auf allen seiten aus, ja. Wenn im Dokument, nach der gewünschten Stelle, jedoch \ClearShipOutPicture aufgerufen wird ist damit Schluss. Daran hätte es also nicht gelegen.

@u_fischer:
Danke!!! Das hat geklappt und lies sich auch gut noch an meine Zwecke anpassen!!!
Die switch-case Anweisung war mit bis lang ein Rätsel in Latex... jetzt sitzt auch die :D Danke



Die PDF im Anhang ist natürlich nicht das Endlayout. Es gibt noch einiges anzupassen, von Schrift, bis hin zum fragwürdigen Chapterstyle. Aber im großen und ganzen steht es :D
Zuletzt geändert von hello_world am Do 27. Feb 2014, 09:56, insgesamt 3-mal geändert.

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Dateianhänge sind momentan nicht möglich, du musst also extern verlinken
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

hello_world
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Fr 21. Feb 2014, 18:08

Beitrag von hello_world »

https://www.dropbox.com/s/eqlfw6drzjm7p ... 0Stand.pdf


Es gibt Vorschriften, wie das Universitätsloge der Uni Augsburg zu platzieren ist. Im vorliegenden Fall sei darauf hingewiesen, dass dies nicht die offiziele Verwendung ist!
Zuletzt geändert von hello_world am Do 27. Feb 2014, 09:57, insgesamt 1-mal geändert.

hello_world
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Fr 21. Feb 2014, 18:08

Beitrag von hello_world »

Einmal zu wenig kompiliert.... Beim Daumenindexübersichtsding sind die Übergänge normalerweise fließend, die Kästen sind nach dem 2. mal kompilieren weg.

Antworten