goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

\autoref \nameref Probleme

 

derGast
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2017, 21:16     Titel: \autoref \nameref Probleme
  Antworten mit Zitat      
Hallo,
für eine Semesterarbeit habe ich unten stehendes Konstrukt für Überschrift/Inhaltsverzeichnis und Kopfzeile. Deshalb, da die Titel im Inhaltsverzeichnis anders aussehen sollen als die Titel der jeweiligen Seite und das Inhaltsverzeichnis des PDF wieder anders, da die Titel sehr lang sind.
Funktioniert alles super, jetzt habe ich aber das Problem, dass ich im Text gerne die Kapitel referenzieren würde und durch mein Konstrukt ein ungewolltes Ergebnis habe.
Hat jemand eine Idee, wie ich das alles zufriedenstellend umsetzen kann?

MWE:


Code • Öffne in Overleaf
\documentclass[10pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\begin{document}
\section[tocentry=\texorpdfstring{Dr. Dieter Dietmar, Universität Buxtehude\\ \textbf{Warum bin ich? Transformationsprozesse in meinem Wasserkopf}}{Warum bin ich?},head={Transformationsprozesse in meinem Wasserkopf}]{Warum bin ich? Transformationsprozesse in meinem Wasserkopf\newline \small \textnormal{\hyperref[subsec:profil_dietmar]{Dr. Dieter Dietmar, Universität Buxtehude}}}
\label{sec:vortrag_dietmar}

Hier ist alles schön, außer, dass ich nicht weiß, wie ich den Titel mit ref bekomme.\\

autoref macht das:\\
\autoref{sec:vortrag_dietmar}\\

nameref das:\\
\nameref{sec:vortrag_dietmar}\\

ich möchte aber:\\
Warum bin ich? Transformationsprozesse in meinem Wasserkopf\\

\subsection*{Dr. Dieter Dietmar}
\label{subsec:profil_dietmar}
Dr. Dieter Dietmar ist sehr schlau und darf deswegen einen Vortrag halten.
\end{document}

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2017, 08:35     Titel:
  Antworten mit Zitat      
Zunächst einmal kann das gar nicht funktionieren, da Du die Erweiterung für das optionale Argument der Gliederungsbefehle gar nicht aktiviert hast. Dazu ist Option headings mit einem der Werte optiontotocandhead, optiontoheadandtoc, optiontotoc, oder optiontohead notwendig. Wenn Du Kolumnentitel aktiviert hättest oder ein Inhaltsverzeichnis in Dein Beispiel eingebaut hättest, wäre Dir das sicher auch aufgefallen.

Dann ist das, was Du haben willst, derzeit keine Information, die irgendwo gespeichert wird. Es entspricht weder tocentry noch head und noch nicht einmal der Überschrift selbst. Ergänzt man die genannte Option wird derzeit der Titel gespeichert, siehe dazu die Definition des Labels in der aux-Datei:
Code • Öffne in Overleaf
\newlabel{sec:vortrag_dietmar}{{1}{1}{\Sectionformat {Warum bin ich? Transformationsprozesse in meinem Wasserkopf\newline \small \textnormal {\hyperref [subsec:profil_dietmar]{Dr. Dieter Dietmar, Universität Buxtehude}}}{\numexpr \csname sectionnumdepth\endcsname \relax }}{section.1}{}}

Nun könnte man das Argument \Sectionformat {Warum bin ich? Transformationsprozesse in meinem Wasserkopf\newline \small \textnormal {\hyperref [subsec:profil_dietmar]{Dr. Dieter Dietmar, Universität Buxtehude}} irgendwie aufwändig zerlegen. Besser ist aber, wenn man stattdessen einfach etwas mehr Markup verwendet:
Code • Öffne in Overleaf
\documentclass[10pt,a4paper,headings=optiontotocandhead]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\makeatletter
\newcommand*{\namereftitle}{%
  \kernel@ifstar {\s@namereftitle}{\@namereftitle}
}
\newcommand*{\s@namereftitle}[1]{%
  \begingroup
    \renewcommand*{\Authorformat}[1]{}% Autorenteil einfach ignorieren
    \nameref*{#1}%
  \endgroup
}    
\newcommand*{\@namereftitle}[1]{%
  \begingroup
    \renewcommand*{\Authorformat}[1]{}% Autorenteil einfach ignorieren
    \nameref{#1}%
  \endgroup
}
\makeatother
\DeclareRobustCommand*{\Titleformat}[1]{#1}
\DeclareRobustCommand*{\Authorformat}[1]{\newline{\small\textnormal{#1}}}

\usepackage{mwe}
\pagestyle{headings}
\begin{document}
\tableofcontents
\section[tocentry=\texorpdfstring{Dr. Dieter Dietmar, Universität Buxtehude\\\textbf{Warum bin ich? Transformationsprozesse in meinem Wasserkopf}}{Warum bin ich?},head={Transformationsprozesse in meinem Wasserkopf}]{\Titleformat{Warum bin ich? Transformationsprozesse in meinem Wasserkopf}\Authorformat{\hyperref[subsec:profil_dietmar]{Dr. Dieter Dietmar, Universität Buxtehude}}}
\label{sec:vortrag_dietmar}

\raggedright

Hier ist alles schön, außer, dass ich nicht weiß, wie ich den Titel mit ref
bekomme.
\bigskip

autoref macht das:\\
\autoref{sec:vortrag_dietmar}
\bigskip

nameref das:\\
\nameref{sec:vortrag_dietmar}
\bigskip

ich möchte aber:\\
Warum bin ich? Transformationsprozesse in meinem Wasserkopf
\bigskip

\verb|\tocentryref|:\\
\namereftitle{sec:vortrag_dietmar}

\subsection*{Dr. Dieter Dietmar}
\label{subsec:profil_dietmar}
Dr. Dieter Dietmar ist sehr schlau und darf deswegen einen Vortrag halten.

\Blindtext[10]
\end{document}

Ich habe das im Beispiel gleich so definiert, dass es auch wie bei \nameref eine Sternform gibt.

Natürlich wäre es sinnvoll ähnliche Markup-Anweisungen auch für den Teil zu verwenden, der im Inhaltsverzeichnis landen soll. Je nachdem wie das ganze (immer wieder) im Dokument vorkommt, wäre es ggf. sogar sinnvoll einen eigenen Überschriftenbefehl zu definieren, damit man die einzelnen Teile der Überschrift nicht mehrfach angeben muss und daraus automagisch ein \section-Befehl wie oben gebastelt wird.

Fazit: Je besser man zwischen Form und Inhalt trennt, desto einfacher ist es, die Form an unterschiedlichen Stellen unterschiedlich zu wählen.

Es sei auch noch darauf hingewiesen, dass man \\ niemals am Absatzende verwenden sollte (siehe stattdessen Option parskip in der KOMA-Script-Anleitung oder im KOMA-Script-Buch). Außerdem hat \\ im Fließtext eigentlich gar nichts zu suchen, erst recht nicht im Blocksatz!

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2017, 08:41     Titel:
  Antworten mit Zitat      
PS: Es sei noch darauf hingewiesen, dass das ganze eine aktuelle TeX-Installation benötigt. Bei der Version von Overleaf ist entweder KOMA-Script oder Paket auf CTANnameref oder Paket auf CTANhyperref zu alt. Was davon zu alt ist, habe ich nicht überprüft. Mit aktuellen Paketen funktioniert es schließlich.

derGast
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2017, 21:21     Titel:
  Antworten mit Zitat      
Vielen Dank für die sehr ausführliche Erklärung. Natürlich hatte die notwendigen Optionen in meinem Originaldokument, habe sie im MWE aber weggelassen, da ich davon ausging, dass sie für die Lösung unwesentlich sind.
Das Dokument baute bei mir auch erst mit dem gewünschten Ergebnis, nachdem ich tlmgr update --all ausgeführt habe.

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de