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.
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:
[code]\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}[/code]
Ich habe dabei auch gleich noch der Tatsache Rechnung getragen, dass Versalsatz immer gesperrt werden muss (siehe [url=http://www.golatex.de/wiki/Tschicholds_Hauptregeln_der_Typografie]Tschicholds Hauptregeln der Typografie[/url]). Allerdings ist der Ausgleich, den [p]microtype[/p] dabei bietet davon abhängig, dass das Kerning der Großbuchstaben passend eingestellt ist. Das ist nicht bei allen Fonts und allen [i]Lochbildnern[/i] der Fall. Daher ist auch das nur eine Notlösung.
Statt [p]tocstyle[/p] kann sicher auch das Paket [tt]etoc[/tt] verwendet werden. Damit kenne ich mich aber nicht aus.
Ohne hyperref könnte man übrigens einfach: [code]\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}[/code]
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.