我注意到环境标题的高度algorithm
不仅取决于字体大小,还取决于实际的标题文本:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[no-math]{fontspec}
\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{microtype}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Euclid's algorithm (Ü)}
\label{euclid}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}
\State $r\gets a\bmod b$
\While{$r\not=0$}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile
\State \textbf{return} $b$
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
当您从标题中删除时(Ü)
,高度/对齐方式会发生变化:
如何才能实现不依赖于实际字形的一致高度和对齐?类似的东西\protect\vphantom{Ü}
似乎可以解决这个问题,但肯定有一些更优雅和通用的方法。
答案1
algorithms.sty
加载float.sty
以定义algorithm
环境。 caption.sty
支持自定义用 定义的字幕float.sty
。您可以使用strut
提供的键caption.sty
来在字幕内保持一致的高度。下面的代码无需algorithms.sty
展示幕后发生的事情:
\documentclass{article}
\usepackage{float}
\floatstyle{ruled}
\floatname{algorithm}{Algorithm}
\newfloat{algorithm}{htbp}{loa}
\usepackage{caption}
\captionsetup[ruled]{strut=on}
\begin{document}
\begin{algorithm}
\captionsetup{strut=off}
\caption{Euclid's algorithm}
\begin{verbatim}
\Procedure{Euclid}{$a,b$}
\State $r\gets a\bmod b$
\While{$r\not=0$}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile
\State \textbf{return} $b$
\EndProcedure
\end{verbatim}
\end{algorithm}
\begin{algorithm}
\caption{Euclid's algorithm}
\begin{verbatim}
\Procedure{Euclid}{$a,b$}
\State $r\gets a\bmod b$
\While{$r\not=0$}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile
\State \textbf{return} $b$
\EndProcedure
\end{verbatim}
\end{algorithm}
\end{document}