PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie die \ref-Ausgabe beeinflussen?



Xenara
17-09-2007, 17:27
Hallo,

Ich habe in meiner Arbeit folgende Struktur (A, B: chapter: 1, 2: sections):

A Allgemeines
1 Auswertung Versuch 1
2 Auswertung Versuch 2
B Experimente
1 Durchführung Versuch 1
2 Durchführung Versuch 2

Die Überschriften sind jeweils mit \label{} versehen.
Wenn ich jetzt mit \ref (und \pageref) zitiere, sieht es so aus:
blabla wie in 1 auf Seite xx zu sehen blabla

Ich hätte aber gerne, dass es so aussieht:
blabla wie in A-1 auf Seite xx zu sehen blabla

Damit wäre die Zuordnung, in welchen Teil es gehört, wesentlich einfacher. Das gesamte Dokument mit
A Allgemeines
A-1 Auswertung Versuch 1
A-2 Auswertung Versuch 2
zu nummerieren möchte ich nicht, es soll nur einfach beim Referenzieren als A-1 ausgegeben werden. Für die Kopfzeilen war es einfach zu lösen.
Aber hierfür komme ich einfach nicht weiter :(

Wäre super, wenn mir jemand auf die Sprünge helfen könnte.
Vielen Dank,
Xenara

sommerfee
17-09-2007, 18:45
\makeatletter
\renewcommand\p@section{\thechapter-}
\makeatother


sollte klappen. (Ungetestet!)

Gruß,
Axel

Xenara
17-09-2007, 21:14
Super, im kleinen Testdokument funktioniert es!
Werd morgen mal schauen, wie es sich in meinem "grossen Werk" macht und dann berichten.

Was hat das mit dem Code auf sich? Ausser renewcommand und thechapter hatte ich noch nie was mit so Code zu tun, für was steht das jeweils?

sommerfee
17-09-2007, 21:27
\makeatletter ... \makeatother sorgt dafür, daß man auch sog. geschützte Befehle, das sind Befehle, die einen @ im Namen beinhalten, definieren, umdefinieren oder verwenden kann. Dieser Schutz ist dafür da, damit man an LaTeX-Anwender nicht so einfach und insbesondere ungewollt LaTeX-Internata umdefinieren kann. Ein \def\@empty{A} oder ähnliches ist nämlich ziemlich tödlich.

Zu dem \p@(Zähler): Zu jedem Zähler (wie "chapter", "section", "figure", "enumerate", ...) werden eine ganze Reihe Befehle vordefiniert, die man nach Bedarf umdefinieren kann. Da ist z.B. \the(Zähler) (z.B. \thesection), welches den Zähler bei Benutzung des dazugehörigen Befehls ausgibt. \(Zähler)name steht häufig (aber nicht bei allen Zählern) für den Zählernamen im Klartext, so ist z.B. \thefigure als "Figure" bzw. "Abbildung" vordefiniert. Und dann gibt es eben noch \p@(Zähler), welches immer automatisch vor \ref gepackt wird und normalerweise leer vordefiniert ist. Durch


\renewcommand\p@section{\thechapter-}

wird also intern bei jedem \ref, welches sich auf eine \section bezieht, automatisch \thechapter- vorangestellt.

Liebe Grüße,
Axel

Xenara
18-09-2007, 09:38
Ah, kapiert. Soweit bin ich noch nicht in die unendlichen Weiten des LaTeX vorgedrungen, aber das eröffnet einige neue Möglichkeiten (und Ausreden, sich mehr um Layout als um Inhalt zu kümmern ;) )

Ich habe deinen Code jetzt so in meinem Dokument drin und es funktioniert auch mir den ganzen includes etc.:


\makeatletter
\renewcommand\p@section{\thechapter-}
\renewcommand\p@subsection{\thechapter-}
\renewcommand\p@subsubsection{\thechapter-}
\makeatother


Vor meinem Anhang habe ich es wieder zurückgestellt, da ich kein "echtes" Chapter dort mehr habe:


\makeatletter
\renewcommand\p@section{}
\renewcommand\p@subsection{}
\renewcommand\p@subsubsection{}
\makeatother

\appendix
\chapter*{Appendix}
\phantomsection\addcontentsline{toc}{chapter}{\app endixname}
\renewcommand{\thesection}{\Alph{section}}
\setcounter{section}{0}

\section{Erster Anhang}
\label{anhang-1}
\section{Zweiter Anhang}
\label{anhang-2}


Hab vielen vielen Dank für deine Hilfe :)
Viele Grüsse,
Xenara

Curnen
19-11-2008, 15:58
Hallo Axel,

Danke für deinen tollen und super erklärten Beitrag. Was ich jetzt noch gerne wissen würde - kann man mit der Methode auch die Ausgabe von \pageref beinflussen und wenn ja, wie ?

sommerfee
19-11-2008, 19:28
Nein, die \p@xxx-Sachen werden nur bei \ref verwendet.

\pageref könnte man allerdings auch beeinflussen, indem man z.B. \thepage geeignet umdefiniert. \thepage ist normalerweise auf ungefähr:


\newcommand\thepage{\arabic{page}}

vordefiniert. (Die Vordefinition wird durch \pagenumbering geändert.)

Gruß,
Axel