PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Name von Umgebung ausgeben



infutura
09-01-2010, 19:50
Hallo,

Oft schreibe ich am Beginn von Kapiteln oder (Unter)abschnitten Sätze wie "In diesem Kapitel ...", um einen kurzen Überblick zu geben. Falls man später die Struktur des Dokumentes ändert und aus einem Kapitel z.B. ein Abschnitt wird, so muss man dies manuell ändern. Es gibt z.B. mit dem Paket cleveref die Möglichkeit, so etwas wie "Kapitel" einer Referenz voranzustellen (mit \cref{my_reference} ). Gibt es auch eine Möglichkeit, nur den Namen der aktuellen Umgebung zu ermitteln, also das, was gedruckt würde, wenn man an der aktuellen Stelle ein \label setzen würde und später mit \cref darauf verweisen würde? Am besten wäre es, wenn es sogar ohne cleveref ginge.

Vielen Dank für Tips!

mechanicus
09-01-2010, 20:45
Hallo,

auch wenn du nicht genau weißt, wie dein Ziel aussieht, so wäre dennoch ein Minimalbeispiel angebracht.


\documentclass[ngerman]{scrreprt}
\usepackage{babel}
\usepackage{hyperref}
\makeatletter
\newcommand{\autorefname}[1]{%
\expandafter\expandafter\expandafter\HyPsd@autoref name
\csname r@#1\endcsname\@nil
}
\makeatother
\begin{document}
\chapter{foo}\label{foo}
\section{foobar}\label{foobar}
\subsection{foobarfoo}\label{foobarfoo}
\autorefname{foo}\\
\autorefname{foobar}\\
\autorefname{foobarfoo}\\
\end{document}

Gruß
Marco

infutura
09-01-2010, 21:25
Vielen Dank für deinen Lösungsvorschlag. Leider lässt sich das Beispiel bei mir nicht ohne Fehler kompilieren. Die Fehler sind:



Kapitel 1.
! Undefined control sequence.
<recently read> \HyPsd@autorefname

l.14 \autorefname{foo}
\\
?
! Undefined control sequence.
\autorefname ...name \csname r@#1\endcsname \@nil

l.14 \autorefname{foo}
\\
?
! Undefined control sequence.
<recently read> \HyPsd@autorefname

l.15 \autorefname{foobar}
\\
?
! Undefined control sequence.
\autorefname ...name \csname r@#1\endcsname \@nil

l.15 \autorefname{foobar}
\\
?
! Undefined control sequence.
<recently read> \HyPsd@autorefname

l.16 \autorefname{foobarfoo}
\\
?
! Undefined control sequence.
\autorefname ...name \csname r@#1\endcsname \@nil

l.16 \autorefname{foobarfoo}
\\
?


Im DVI erscheint nach den Überschriften folgendes:



11foochapter.1
1.11foobarsection.1.1
1.1.11foobarfoosubsection.1.1.1


Ich würde auch selbst nach einer Lösung suchen. Kann mir jemand einen hinweis auf geeignete Dokumentation geben?

mechanicus
10-01-2010, 09:39
Hi,

bei mir funktioniert das obige Beispiel. Zum Vergleich die File List.

*File List*
scrreprt.cls 2009/07/24 v3.04a KOMA-Script document class (report)
scrkbase.sty 2009/07/24 v3.04a KOMA-Script package (KOMA-Script-dependent ba
sics and keyval usage)
scrbase.sty 2009/07/24 v3.04a KOMA-Script package (KOMA-Script-independent
basics and keyval usage)
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
scrlfile.sty 2009/03/25 v3.03 KOMA-Script package (loading files)
tocbasic.sty 2009/06/08 v3.03b KOMA-Script package (handling toc-files)
scrsize11pt.clo 2009/07/24 v3.04a KOMA-Script font size class option (11pt)
typearea.sty 2009/07/24 v3.04a KOMA-Script package (type area)
babel.sty 2008/07/06 v3.8l The Babel package
ngermanb.ldf 2008/07/06 v2.6n new German support from the babel system
hyperref.sty 2009/12/28 v6.79z Hypertext links for LaTeX
ifpdf.sty 2009/04/10 v2.0 Provides the ifpdf switch (HO)
ifvtex.sty 2008/11/04 v1.4 Switches for detecting VTeX and its modes (HO)
ifxetex.sty 2009/01/23 v0.5 Provides ifxetex conditional
hycolor.sty 2009/12/12 v1.6 Color options of hyperref/bookmark (HO)
xcolor-patch.sty 2009/12/12 xcolor patch
pd1enc.def 2009/12/28 v6.79z Hyperref: PDFDocEncoding definition (HO)
pdftexcmds.sty 2009/12/12 v0.7 Utility functions of pdfTeX for LuaTeX (HO)
infwarerr.sty 2007/09/09 v1.2 Providing info/warning/message (HO)
ifluatex.sty 2009/04/17 v1.2 Provides the ifluatex switch (HO)
ltxcmds.sty 2009/12/12 v1.1 LaTeX kernel commands for general use (HO)
etexcmds.sty 2007/12/12 v1.2 Prefix for e-TeX command names (HO)
intcalc.sty 2007/09/27 v1.1 Expandable integer calculations (HO)
hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
kvoptions.sty 2009/12/08 v3.6 Keyval support for LaTeX options (HO)
kvsetkeys.sty 2009/12/22 v1.7 Key value parser (HO)
url.sty 2006/04/12 ver 3.3 Verb mode for urls, etc.
bitset.sty 2007/09/28 v1.0 Data type bit set (HO)
bigintcalc.sty 2007/11/11 v1.1 Expandable big integer calculations (HO)
atbegshi.sty 2009/12/02 v1.10 At begin shipout hook (HO)
hpdftex.def 2009/12/28 v6.79z Hyperref driver for pdfTeX
atveryend.sty 2009/12/11 v1.3 Hooks at very end of document (HO)
rerunfilecheck.sty 2009/12/18 v1.2 Rerun checks for auxiliary files (HO)
uniquecounter.sty 2009/12/18 v1.1 Provides unlimited unique counter (HO)
nameref.sty 2009/12/18 v2.35 Cross-referencing by name of section
refcount.sty 2008/08/11 v3.1 Data extraction from references (HO)
gettitlestring.sty 2009/12/18 v1.3 Cleanup title references (HO)
test.out
test.out
***********

Oder funktioniert es bei anderen ebenfalls nicht.

Gruß
Marco

infutura
10-01-2010, 16:20
Ich nutze Debian squeeze und dort ist nur Texlive 2007 dabei. Daher werden einige Dateien älter sein. Gibt es Ideen, woran es also liegen könnte?

mechanicus
10-01-2010, 16:37
Ich nutze Debian squeeze und dort ist nur Texlive 2007 dabei. Daher werden einige Dateien älter sein. Gibt es Ideen, woran es also liegen könnte?
Daran wird es wohl liegen. Und warum installierst du dir nicht TexLive 2009

Gruß
Marco

infutura
10-01-2010, 16:59
Ich bevorzuge i.d.R. die Debian Pakete wenn möglich.

ElEsido
11-03-2010, 17:01
...
\makeatletter
\newcommand{\autorefname}[1]{%
\expandafter\expandafter\expandafter\HyPsd@autoref name
\csname r@#1\endcsname\@nil
}
\makeatother
...


Die Ausgabe stimmt, aber nach dem Begriff erscheint eine grössere Lücke als zwischen den andern Wörtern. Im Bild ein Beispiel mit autoref gefolgt von Autorefname und vref. Kann die Lücke irgendwie angepasst werden?

http://thumbnails25.imagebam.com/7157/59256471565812.gif (http://www.imagebam.com/image/59256471565812)
(Klick falls kein Thumbnail erscheint) (http://www.imagebam.com/image/59256471565812)

Edit: Die Befehle müssen direkt aneinandergeschrieben werden, dann sieht es schön aus:

text \autorefname{blubb}\vref{blubb} text