我尝试编译以下MWE:
\documentclass{article}
\usepackage[activate=true,final,tracking=true,kerning=true,spacing=true]{microtype} % improves font appearance. http://www.khirevich.com/latex/microtype/
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
\State $W_{out}\gets\{w_{out,1},\dots\}$
\State $W_{in}\gets\{w_{in,1},w_{in,2},\dots\}$
\State $g \gets\Call{initialGraph}{W_{in},W_{out}}$
\end{algorithmic}
\end{algorithm}
\end{document}
失败了。但是,如果我从序言中删除 microtype 或者只是删除算法的最后一行,文档就会按预期进行编译。
有任何想法吗?
答案1
虽然您可能希望microtype
在运行文本中使用 的功能,但您不希望在算法中使用它们,特别是字母间距。
\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\usepackage[activate=true,final,tracking=true,kerning=true,spacing=true]{microtype}
\usepackage{etoolbox}
\AtBeginEnvironment{algorithmic}{\microtypesetup{disable}}
\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
\State $W_{out}\gets\{w_{out,1},\dots\}$
\State $W_{in}\gets\{w_{in,1},w_{in,2},\dots\}$
\State $g \gets\Call{initialGraph}{W_{in},W_{out}}$
\end{algorithmic}
\end{algorithm}
\end{document}
也许下标中的“in”和“out”应该用 括起来\mathrm
。