algorithm2e 中 \FuncSty 的奇怪行为

algorithm2e 中 \FuncSty 的奇怪行为

我在 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}

您使用ruledalgorithm2e似乎不合适(顶部的双重规则应该包含一个算法\caption)。

相关内容