bei meiner Arbeit habe ich die Indizes von matematischen Symbolen etwas tiefer gestellt. Einen entsprechenden Code dazu habe ich im Netzt gefunden (vor \begin{document}). Jedoch funktioniert diese "tiefere" Tiefstellung nicht, wenn ich die Schrift vorher auf \small umschalte. Das Problem ist im Minimalbeispiel (übertrieben) verdeutlicht. Wie erreiche ich die tiefere Tiefstellung auch, wenn die Schrift auf \small eingestellt ist?
\documentclass[paper=a4,oneside,onecolumn,12pt]{scrreprt}
\usepackage{lmodern}
\usepackage[onehalfspacing]{setspace} %\singlespacing %\doublespacing
\usepackage[english,ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{booktabs}
\usepackage{amsmath}
\selectlanguage{ngerman}
\makeatletter
\glb@settings
\fontdimen16\textfont2=10pt
\makeatother
\begin{document}
Im Laufe der Arbeit kommen sowohl im Text auch als in Tabellen einige Formelzeichen vor. Die Indizes bei dem Symbol $\sigma_X$ sollen etwas tiefergestellt werden (uebertrieben dargestellt). Dies funktioniert in diesem Minimalbeispiel gut. In den Tabellen wird jedoch kleinerer Text genutzt.
Nachdem der Text kleiner gestellt wurde, nimmt obiger Befehl keinen Einfluss mehr auf die Tiefstellung.
\small
Nun ist der Text kleiner eingestellt. Die Aenderung der Tiefstellung funktioniert nun nicht mehr: Symbol $\sigma_X$. Im Folgenden noch eine Tabelle zur Verdeutlichung.
\bigskip
\begin{tabular}{ccc}
\toprule
Spalte 1 & Spalte 2 & Spalte 3\\
\midrule
$\sigma_1$ & $\sigma_2$ & $\sigma_3$\\
$\sigma_X$ & $\sigma_Y$ & $\sigma_Z$\\
\bottomrule
\end{tabular}
\end{document}
Im Prinzip musst Du den gleichen Code für alle Schriftgrößen (und ggf. Schnitte), auf die er angewendet werden soll, ausführen, da \fontdimen schriftabhängig ist. Also beispielsweise:
\makeatletter
\glb@settings\fontdimen16\textfont2=10pt% für \normalsize
\small\glb@settings\fontdimen16\textfont2=10pt% für \small
\makeatother
Das ist übrigens durchaus ein übler Hack, da er voll auf Interna von LaTeX setzte.
Das ist dann auch nicht mehr wirklich ein übler Hack, weil \every@math@size (mehr schlecht als recht) in source2e.pdf genau für solche Zwecke dokumentiert ist.
Man kann sich das \selectlanguage{ngerman} in der Präambel übrigens sparen, wenn man ngerman beim Laden von babel als erste Sprache angibt. Die erste Sprache ist immer die "Hauptsprache". Siehe den ersten Abschnitt der aktuellen Anleitung zu babel (ab Version 3.9).
Übrigens zeigte mir dieses Problem einmal mehr, wie hilfreich Minimalbeispiele sein können. Denn zuerst dachte ich, die fehlende "tiefere" Tiefstellung sei darauf zurückzuführen, dass die entsprechenden Symbole in einer Tabelle stehen. Beim Erstellen des Minimalbeispiels konnte ich jedoch das Problem selbstständig auf den Befehl \small zurückführen.
Noch so einer hat geschrieben:Eigentlich bietet sich an, stattdessen mit \every@math@size zu arbeiten. Der Code wird AFAIK bei jeder Umschaltung der Mathe-Schriftgröße ausgeführt:
Man sollte \every@math@size allerdings niemals wie hier einen Wert direkt zuweisen, sondern über \addto@hook, weil sonst vorherige Werte von \every@math@size, die beispielsweise von einer Klasse oder einem Paket gesetzt werden, verloren gehen. Richtig wäre also
Anfänger seien darauf hingewiesen, dass \addto@hook aus dem LaTeX-Kern ausschließlich für Token-Register gedacht ist. \every@math@size ist ein solches Token-Register.