Toc mit Uppercase (Sub-)Sections und Verlinkungen? Thema ist als GELÖST markiert

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


kanra

Toc mit Uppercase (Sub-)Sections und Verlinkungen?

Beitrag von kanra »

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}

sudo
Forum-Guru
Forum-Guru
Beiträge: 459
Registriert: Mi 3. Okt 2012, 11:32

Beitrag von sudo »

Auf TeX.sx hatte schon mal jemand dein Problem: Uppercase Sections and Subsections on TOC
Ein vollständiges Minimalbeispiel (VM) zu erzeugen, ist gar nicht schwer und hilft ganz oft, Fehler selber zu finden. Ohne bekommt man selten gute Antworten. Anleitungen findest du z.B. im golatex Wiki auf TeXWelt oder minimalbeipiel.de
Außerdem hilft das Lesen dieser Seite, Fragen richtig zu stellen.

kanra

Beitrag von kanra »

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}

sudo
Forum-Guru
Forum-Guru
Beiträge: 459
Registriert: Mi 3. Okt 2012, 11:32

Beitrag von sudo »

Ich kann dir da jetzt nicht so schnell helfen. Deshalb ist es ganz wichtig, dass du den Status aktuell hältst!
Ein vollständiges Minimalbeispiel (VM) zu erzeugen, ist gar nicht schwer und hilft ganz oft, Fehler selber zu finden. Ohne bekommt man selten gute Antworten. Anleitungen findest du z.B. im golatex Wiki auf TeXWelt oder minimalbeipiel.de
Außerdem hilft das Lesen dieser Seite, Fragen richtig zu stellen.

Noch so einer

Beitrag von Noch so einer »

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.

Besserwisser

Beitrag von Besserwisser »

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.

kanra

Beitrag von kanra »

Das ist perfekt, vielen Dank!

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

Antworten