Toc mit Uppercase (Sub-)Sections und Verlinkungen?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Toc mit Uppercase (Sub-)Sections und Verlinkungen?

von kanra » Fr 28. Aug 2015, 10:59

Das ist perfekt, vielen Dank!

Danke auch für die Links, da gucke ich gleich mal rein. (-:

von Besserwisser » Fr 28. Aug 2015, 10:46

Besserwisserei für alle, die an offiziellen Infos interessiert sind: subfigure ist übrigens offiziell veraltet. Der offizielle Nachfolger heißt subfig. Empfehlenswert ist IMHO subcaption.

von Noch so einer » Fr 28. Aug 2015, 10:42

Das Problem ist, dass hyperref das Text-Argument selbst auch noch anfasst, um den Link zu starten und zu beenden. Theoretisch kann man das Problem dadurch lösen, dass man per Option nur die Seitenzahl aber nicht den Text für den Link verwendet. Aber man kann auch die Link-Anweisung lokal passend ändern:
\documentclass{scrartcl}
\usepackage{microtype}
\usepackage{tocstyle}
\usetocstyle{allwithdot}
\settocfeature[toc][1]{entryhook}{\MakeHyperLinkStartUppercase}
\settocfeature[toc][2]{entryhook}{\MakeHyperLinkStartUppercase}
\settocfeature[toc][3]{entryhook}{\itshape}
\usepackage{hyperref}
\makeatletter
\newcommand*\MakeHyperLinkStartUppercase{%
  \let\saved@hyper@linkstart\hyper@linkstart
  \def\hyper@linkstart##1##2##3{%
    \saved@hyper@linkstart{##1}{##2}{\textls[50]{\MakeUppercase{##3}}}}%
}
\makeatother
\usepackage{mwe}
\begin{document}
\tableofcontents
\Blinddocument
\end{document}
Ich habe dabei auch gleich noch der Tatsache Rechnung getragen, dass Versalsatz immer gesperrt werden muss (siehe Tschicholds Hauptregeln der Typografie). Allerdings ist der Ausgleich, den microtype dabei bietet davon abhängig, dass das Kerning der Großbuchstaben passend eingestellt ist. Das ist nicht bei allen Fonts und allen Lochbildnern der Fall. Daher ist auch das nur eine Notlösung.

Statt tocstyle kann sicher auch das Paket etoc verwendet werden. Damit kenne ich mich aber nicht aus.

Ohne hyperref könnte man übrigens einfach:
\documentclass{scrartcl}
\usepackage{microtype}
\usepackage{tocstyle}
\usetocstyle{allwithdot}
\settocfeature[toc][1]{entryhook}{\MakelsUppercase}
\settocfeature[toc][2]{entryhook}{\MakelsUppercase}
\settocfeature[toc][3]{entryhook}{\itshape}
%\usepackage{hyperref}
\newcommand*\MakelsUppercase[1]{\textls[50]{\MakeUppercase{#1}}}
\usepackage{mwe}
\begin{document}
\tableofcontents
\Blinddocument
\end{document}
verwenden.

Merke: Versalsatz ist grundsätzlich mit Vorsicht zu genießen. Man sollte schon über einige typographische Kenntnisse verfügen, um sich daran zu wagen.

von sudo » Fr 28. Aug 2015, 10:03

Ich kann dir da jetzt nicht so schnell helfen. Deshalb ist es ganz wichtig, dass du den Status aktuell hältst!

von kanra » Fr 28. Aug 2015, 10:02

Vielen Dank für die schnelle Antwort!

Ich habe den vorgeschlagenen Code einmal direkt übernommen und das sieht tatsächlich genauso aus wie ich es haben will. Wenn ich dann aber statt article als Dokumentenklasse scrartcl verwende, werden die Einträge wieder mit Kleinbuchstaben dargestellt. Leider kann ich das auch nicht einfach verändern, weil im restlichen Dokument vieles auf KOMA Script ausgerichtet ist. Gibt es für diese Dokumentenklasse evtl. auch eine Möglichkeit?
\documentclass[captions=nooneline, headings=normal, fontsize=12pt, a4paper, oneside]{scrartcl}

%%% Patching the kernel \@sect command
\usepackage{regexpatch}
\makeatletter
\xpatchcmd*{\@sect}{\fi#7}{\fi\@nameuse{format#1}{#7}}{}{}

%%% for sections and subsections we want uppercase
\protected\def\formatsection{\MakeUppercase}
\protected\def\formatsubsection{\MakeUppercase}

%%% the other titles are left unchanged
\let\formatsubsubsection\@firstofone
\let\formatparagraph\@firstofone
\let\formatsubparagraph\@firstofone

%%% the following is necessary only if hyperref is used
\AtBeginDocument{%
	\pdfstringdefDisableCommands{%
		\let\formatsection\@firstofone
		\let\formatsubsection\@firstofone
	}%
}
\makeatother

\usepackage{hyperref}

\setcounter{secnumdepth}{3}

\begin{document}
	
	\tableofcontents
	
	\section{This is a section}
	
	\subsection{This is a subsection}
	
	\subsubsection{This is a subsubsection}
	
\end{document}

von sudo » Fr 28. Aug 2015, 09:34

Auf TeX.sx hatte schon mal jemand dein Problem: Uppercase Sections and Subsections on TOC

Toc mit Uppercase (Sub-)Sections und Verlinkungen?

von kanra » Fr 28. Aug 2015, 08:31

Guten Morgen!

Ich arbeite gerade an einem Dokument, in dem ich das Inhaltsverzeichnis optisch mittlerweile wie gewünscht hinbekommen habe. Vor allem die Großbuchstaben bei den Sections und Subsections gefallen mir dort sehr gut und sollen auch eigentlich bleiben. Allerdings wird das Dokument sehr lang, von daher soll das Inhaltsverzeichnis im .pdf Verlinkungen zu den jeweiligen Sections etc. enthalten. Mit dem package hyperref ist das zwar kein Problem, leider verträgt sich das aber nicht mit meinen Uppercase Einstellungen (SECTION, SUBSECTION). Weiß da jemand vielleicht eine Alternative?

Vielen Dank schon mal! (-:
\documentclass[captions=nooneline, headings=normal, fontsize=12pt, a4paper, oneside]{scrartcl}

\usepackage[subfigure]{tocloft}
\usepackage{subfigure}
\usepackage{etoolbox}

\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}
\setcounter{tocdepth}{4} 
\setcounter{secnumdepth}{4}

\makeatletter %% Uppercase options for (sub)sections 
\patchcmd{\l@section}{#1}{\MakeUppercase{#1}}{}{}
\patchcmd{\l@subsection}{#1}{\MakeUppercase{#1}}{}{}
\patchcmd{\l@subsubsection}{#1}{\itshape{#1}}{}{}
\makeatother

\usepackage[english]{babel}
\usepackage{blindtext}

%\usepackage[colorlinks=false]{hyperref}


\begin{document} %% ------------------------------------------------------------------------------------------------------
	\tableofcontents
	
	\newpage
		
	\section{Section}
	\subsection{Subsection}
	\blindtext
	
	\subsection{Subsection}
	\blindtext
	
	\section{Section}
	\subsection{Subsection}
	\subsubsection{Subsubsection}
	\paragraph{Paragraph}
	\blindtext
	
\end{document}

Nach oben