微类型和算法包的组合编译失败

微类型和算法包的组合编译失败

我尝试编译以下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

相关内容