我在 algorithm2e 环境中多次使用小写字体 \textsc{MyAlgorithm},如下所示:
\documentclass[a4paper, english]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage[ruled,linesnumbered,vlined]{algorithm2e}
\begin{document}
\begin{algorithm}
\DontPrintSemicolon
\FuncSty{${\textsc{FirstAlgorithm}}(a, b))$} \Begin{
$ X \leftarrow \textsc{AnotherAlgorithm}(c, d)$\;
}
\end{algorithm}
\end{document}
我不明白为什么 FirstAlgorithm 的字体完全出乎意料(看起来像 \textit),而 AnotherAlgorithm 后来看起来却像它应该的那样?有什么想法吗?
答案1
\FuncSty
使用 设置其参数\texttt
,它继承自\textsc
(来自algorithm2e.sty
):
\newcommand{\FuncSty}[1]{\textnormal{\texttt{#1}}\unskip}%\SetFuncSty{texttt}
从技术上讲,在这种情况下你不需要\FuncSty
,但我建议定义一个宏来执行函数名称格式化始终如一:
\documentclass{article}
\usepackage[ruled,linesnumbered,vlined]{algorithm2e}% http://ctan.org/pkg/algorithm2e
\newcommand{\FuncName}[1]{\mbox{\normalfont\textsc{#1}}}
\begin{document}
\begin{algorithm}
\DontPrintSemicolon
\FuncSty{${\textsc{FirstAlgorithm}}(a, b))$}
\Begin{
$ X \leftarrow \textsc{AnotherAlgorithm}(c, d)$\;
}
\end{algorithm}
\begin{algorithm}
\DontPrintSemicolon
$\FuncName{FirstAlgorithm}(a, b)$
\Begin{
$X \leftarrow \FuncName{AnotherAlgorithm}(c, d)$\;
}
\end{algorithm}
\end{document}
您使用ruled
由algorithm2e
似乎不合适(顶部的双重规则应该包含一个算法\caption
)。