PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erste Seite eines Kapitels ermitteln



strolch
14-05-2010, 08:43
Hallo zusammen,

ich erzeuge mit diesem Code



\AddToShipoutPicture{
\begingroup
\ifodd\value{page}
\BackgroundPictureR
\else
\BackgroundPictureL
\fi
\endgroup



auf jeder Seite, recht und linke Seiten verschieden, ein Hintergrundbild (\usepackage{eso-pic}). Nun möchte ich eine Ausnahmeregel fuer die jeweils erste Seite eines Kapitels angeben. Da Kapitel ueblicher weise auf einer rechten Seite beginnen, also mit einer ungerade Seitennummer, wuerede ich einfach eine weitere Bedingung in den IF-Teil einfuegen wollen. Nur weiss ich nicht wie.

Ich suche also etwas in der Art:


\AddToShipoutPicture{
\begingroup
\ifodd\value{page}
% wenn nicht erste Seite eines Kapitels
\BackgroundPictureR
\else
\BackgroundPictureL
\fi
\endgroup


Gibt es eine Moeglilchkeit abzufragen, ob ich mich auf der ersten Seite eines Kapitels befinde und wenn ja, wie sehe sie aus.

Danke schon mal

Strolch

mechanicus
14-05-2010, 10:39
Hi,

ich hätte eine Idee für eine andere Möglichkeit. Du kannst dein Bild mittels der Kopfzeilendeklaration setzen. Hier wird nämlich zwischen chapter-Seiten unterschieden.

Gruß
Marco

strolch
14-05-2010, 20:54
Die Idee hatte auch schon. Ich wollte aber erst absichern, ob es nicht doch eine "einfache" Abfrage gibt, die ich nur noch nicht kenne.

Alternativ hatte ich versucht zu ermitteln, welcher pagestype gesetzt ist, da auf meinen Anfangsseiten empty gesetzt ist, bis ich herausgefunden habe, dass man das nicht abfragen kann.

Zitat aus (http://www.tex.ac.uk/tex-archive/digests/tex-d-l/tex-d-l.1994.lst):"
> Wie kann ich abfragen, welcher pagestyle (plain, empty,
> headings, myheadings) gerade geladen ist? Ich moechte
> naemlich einen Befehl definieren, der abhaengig davon
> unterschiedlich reagiert.

Kann man nicht, da \pagestyle{xyz} nur dazu fuehrt, dass das Makro
\ps@xyz ausgefuehrt wird, jedoch nicht `xyz' irgendwo sichert.

Man muesste schon an die internen Makros \ps@plain, \ps@empty, ...
fuer die einzelnen pagestyles weiteren Code anhaengen, die das
Verhalten des zu definierenden Befehls entprechend abaendern.

Bernd Raichle, DANTE Koordinator `german.sty' "

Hat jemand noch eine andere Idee?

rais
14-05-2010, 22:21
Moin moin,

Die Idee hatte auch schon. Ich wollte aber erst absichern, ob es nicht doch eine "einfache" Abfrage gibt, die ich nur noch nicht kenne.

bist Du sicher, daß ein möglicher Ansatz per Kopf- oder Fußzeilengestaltung nicht `einfacher' wäre?


Alternativ hatte ich versucht zu ermitteln, welcher pagestype gesetzt ist, da auf meinen Anfangsseiten empty gesetzt ist, bis ich herausgefunden habe, dass man das nicht abfragen kann.

Das vllt nicht, aber Kapitelstartseiten setzen ihren Seitenstil per \thispagestyle -- und darin wird \@specialpagetrue gesetzt ... so Du \thispagestyle nicht andernorts verwendest, könnte Dich hier eine Abfrage auf \if@specialpage ... \fi weiterbringen (wegen des @ im Befehlsnamen müsstest Du Dein gesamtes Konstrukt in \makeatletter ... \makeatother klammern).
Ggf. müsstest Du diese Abfrage um einen Test auf \@specialstyle erweitern (darin speichert \thispagestyle den Stil für `diese' Seite).

MfG

strolch
15-05-2010, 17:48
hallo,



Zitat von rais
... könnte Dich hier eine Abfrage auf \if@specialpage ... \fi weiterbringen ...

ich habe es versucht, es lief auch durch, nur waren anschließend auf allen rechten seiten meine bilder verschwunden.

also habe ich versucht den zweiten vorschlag umzusetzen.


Zitat von rais
bist Du sicher, daß ein möglicher Ansatz per Kopf- oder Fußzeilengestaltung nicht `einfacher' wäre?

bin ich uebrigens nicht, da ich da auch nicht genau weiß wie ich es mache.
ich bin bis jetzt so weit gekommen:



\documentclass[fontsize=12pt, paper=a4, twoside]{scrbook}

\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{tikz}

\newcommand\PictureR{%
\begin{tikzpicture}
[even odd rule,rounded corners=1pt,x=10pt,y=10pt]
\filldraw[fill=black] (-1,-1) rectangle (2,2);
\draw (0.5,0.5) node [color=white, scale=2] {\thechapter};
\end{tikzpicture}
}

\newcommand\MyPicture{%
\ifodd\value{page}%
\begin{tikzpicture}
[even odd rule,rounded corners=1pt,x=10pt,y=10pt]
\filldraw[fill=red] (-1,-1) rectangle (2,2);
\draw (0.5,0.5) node [color=white, scale=2] {\thechapter};
\end{tikzpicture}
\else
\begin{tikzpicture}
[even odd rule,rounded corners=1pt,x=10pt,y=10pt]
\filldraw[fill=blue] (-1,-1) rectangle (2,2);
\draw (0.5,0.5) node [color=white, scale=2] {\thechapter};
\end{tikzpicture}
\fi
}

\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\ihead[]{\headmark}
\ohead[\MyPicture\pagemark]{\pagemark}

\begin{document}
\chapter{Bla A}
\foreach \i in {1,...,5}{\blindtext}

\section{BlaBla}
\blindtext
\blindtext

\chapter{Bal B}
\foreach \i in {1,...,4}{\blindtext}

\section{BlaBal}
\blindtext
\end{document}


habe aber das problem, das ich die bilder nicht dort platzieren kann, wo ich moechte. ich scheine nicht aus der kopfzeile raus zu kommen. und dann habe ich nur auf jeder zweiten seite das gewuenschte bild und das leidige problem, das ich immer noch ein bild auf der startseite eines kapitels habe.

ich bin weiterhin fuer alle ratschlaege offen.
strolch

mechanicus
15-05-2010, 17:56
Hi,


\documentclass[fontsize=12pt, paper=a4, twoside]{scrbook}

\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\newcommand\PictureR{%
\begin{tikzpicture}[overlay]
[even odd rule,rounded corners=1pt,x=10pt,y=10pt]
\filldraw[fill=black] (-1,-1) rectangle (2,2);
\draw (0.5,0.5) node [color=white, scale=2] {\thechapter};
\end{tikzpicture}
}

\newcommand\MyPicture{%
\ifodd\value{page}%
\begin{tikzpicture}[overlay]
[even odd rule,rounded corners=1pt,x=10pt,y=10pt]
\filldraw[fill=red] (-1,-1) rectangle (2,2);
\draw (0.5,0.5) node [color=white, scale=2] {\thechapter};
\end{tikzpicture}
\else
\begin{tikzpicture}[overlay]
[even odd rule,rounded corners=1pt,x=10pt,y=10pt]
\filldraw[fill=blue] (-1,-1) rectangle (2,2);
\draw (0.5,0.5) node [color=white, scale=2] {\thechapter};
\end{tikzpicture}
\fi
}

\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\ihead[]{\headmark}
\ohead[\MyPicture\pagemark]{\pagemark}

\begin{document}
\chapter{Bla A}
\foreach \i in {1,...,5}{\blindtext}

\section{BlaBla}
\blindtext
\blindtext

\chapter{Bal B}
\foreach \i in {1,...,4}{\blindtext}

\section{BlaBal}
\blindtext
\end{document}

Gruß
Marco

rais
15-05-2010, 18:19
Moin moin,


und dann habe ich nur auf jeder zweiten seite das gewuenschte bild und das leidige problem, das ich immer noch ein bild auf der startseite eines kapitels habe.

naja, genau das hast Du ja definiert


\ohead[\MyPicture\pagemark]{\pagemark}

setzt \MyPicture nur auf (scr)plain-Seiten ein, versuch es vllt mal so


\ohead[\pagemark]{\MyPicture\pagemark}

MfG

strolch
15-05-2010, 19:30
danke marco und rais,

uere hinweise haben mir sehr geholfen. hier das vorlaeufige ergebnis.

auf jeder seite, ausgenommen der ersten seite eines kapitels habe ich außen am rand ein kleines schwarzes kaestchen, als eine art "schnellfinder", in dem die aktuelle kapitelnummer steht.



\documentclass[fontsize=12pt, paper=a4, twoside]{scrbook}

\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{tikz}
\usetikzlibrary{backgrounds}

\newcommand\PictureR{%
\begin{tikzpicture}[overlay]
[even odd rule,rounded corners=1pt,x=10pt,y=10pt]
\filldraw[fill=black] (4,-5-\thechapter) rectangle (2,-7-\thechapter);
\draw (3,-6-\thechapter) node [color=white, scale=3] {\thechapter};
\end{tikzpicture}
}

\newcommand\PictureL{%
\begin{tikzpicture}[overlay]
[even odd rule,rounded corners=1pt,x=10pt,y=10pt]
\filldraw[fill=black] (-3.5,-5-\thechapter) rectangle (-1.5,-7-\thechapter);
\draw (-2.5,-6-\thechapter) node [color=white, scale=3] {\thechapter};
\end{tikzpicture}
}

\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\ihead[]{\headmark}
\lehead[\pagemark]{\PictureL\pagemark}
\rohead[\pagemark]{\PictureR\pagemark}

\begin{document}
\chapter{Bla A}
\foreach \i in {1,...,5}{\blindtext}

\section{BlaBla}
\foreach \i in {1,...,5}{\blindtext}

\chapter{Bal B}
\foreach \i in {1,...,4}{\blindtext}

\section{BlaBal}
\foreach \i in {1,...,9}{\blindtext}
\end{document}


mal abgesehen von etwas feinjustierung, richtig am rand ausrichten und das nach unten wandern des kaestchens pro kapitel anpassen, macht es das was ich mir vorgestellt haben.

also besten dank nochmals,
strolch

mechanicus
15-05-2010, 19:35
Hi,

wenn das dein Ziel ist:
http://www.komascript.de/node/25
einfach mal nach Daumenindex suchen.

Gruß
Marco

strolch
15-05-2010, 19:54
Hallo,



wenn das dein Ziel ist:
http://www.komascript.de/node/25
einfach mal nach Daumenindex suchen.


Nein, nicht doch! So haette ich es auch machen koennen.
Aber meine/unsere Version ist schoener und selber gemacht ;)
Danke nochmals,
Strolch

rais
16-05-2010, 09:22
Moin moin,


Aber meine/unsere Version ist schoener und selber gemacht ;)

nichts gegens Selbermachen, aber Dein Code dürfte in die Hose gehen, sobald \appendix ins Spiel kommt: \thechapter ist dann kein numerischer Ausdruck mehr ... vllt besser \arabic{chapter} oder \value{chapter} bei der Positionsbestimmung Deiner Box verwenden?
Und dann vllt noch einen Merker setzen, wie viele Kapitel es im Hauptteil gab und diesen Merker dann bei der Positionsbestimmung gleich mit berücksichtigen, sonst springt die Box im Anhang quasi wieder nach oben (chapter wird dort wieder neu durchgezählt).;)

BTW:



\foreach \i in {1,...,5}{\blindtext}

nettes Konstrukt :) aber nicht nötig:


\blindtext[5]

MfG

strolch
16-05-2010, 14:49
hallo,



nichts gegens Selbermachen, aber Dein Code dürfte in die Hose gehen, sobald \appendix ins Spiel kommt: \thechapter ist dann kein numerischer Ausdruck mehr ... vllt besser \arabic{chapter} oder \value{chapter} bei der Positionsbestimmung Deiner Box verwenden?

Und dann vllt noch einen Merker setzen, wie viele Kapitel es im Hauptteil gab und diesen Merker dann bei der Positionsbestimmung gleich mit berücksichtigen, sonst springt die Box im Anhang quasi wieder nach oben (chapter wird dort wieder neu durchgezählt).;)


das ich beim anhang probleme bekomme weiß ich, stoert aber nicht weiter, da ich den schnellfinder dort eh nicht haben moechte. ist aber ein guter hinweis, falls ich sie doch noch mal in anhang aktivieren moechte.

ich habe mir zwei einfache schalter gebastelt, mit denen ich den schnellfinder an- und ausschalten kann.



\newcommand\PicsOn{%
\lehead[\pagemark]{\PictureL\pagemark}
\rohead[\pagemark]{\PictureR\pagemark}
}

\newcommand\PicsOff{%
\ohead[\pagemark]{\pagemark}
}




BTW: nettes Konstrukt :) aber nicht nötig:

fand ich auch nett.



\blindtext[5]

und das kannte ich noch nicht.

also nochmals ein danke an alle
strolch