Antwort1
\shortstack
ist wirklich ungeeignet für das gleichmäßige Stapeln von Zeichen, da es nur die Höhe und Tiefe des Zeichens berücksichtigt und dazwischen nur 3pt hinzufügt.
Betrachten Sie das Ergebnis mit
\documentclass{article}
\begin{document}
\shortstack{a\\c\\e}
\shortstack{g\\y\\q}
\shortstack{fg\\ly\\pt}
\shortstack{l\\a\\f}
\end{document}
Das Ergebnis ist sicherlich nicht das, was Sie erwartet haben. Der Befehl ist nur dann sinnvoll, wenn sein Argument nur aus Großbuchstaben besteht (ohne diakritische Zeichen).
\documentclass{article}
\newcommand{\bettershortstack}[2][c]{%
\begin{tabular}[b]{@{}#1@{}}#2\end{tabular}%
}
\begin{document}
\bettershortstack{a\\c\\e}
\bettershortstack{g\\y\\q}
\bettershortstack{fg\\ly\\pt}
\bettershortstack{l\\a\\f}
\end{document}
Und nun Ihr Beispiel:
\documentclass{article}
\newcommand{\bettershortstack}[2][c]{%
\begin{tabular}[b]{@{}#1@{}}#2\end{tabular}%
}
\begin{document}
\bettershortstack{hoge \\ foo \\ bar}
\bettershortstack{hoge \\ \\ bar}
\end{document}
Antwort2
Damit alles richtig ausgerichtet wird, verwenden Sie ein \vphantom
, da die Zeilenhöhen relativ zum Eintrag sind:
\documentclass{article}
\usepackage{stackengine}
\begin{document}
\shortstack[c]{hoge \\ foo \\ bar}
\shortstack[c]{hoge \\ \\ bar}
\shortstack[c]{hoge \\ \vphantom{foo} \\ bar}
\end{document}