更改 algo.sty 中算法名称的字体

更改 algo.sty 中算法名称的字体

我在用algo.sty用 LaTeX 写算法。我希望算法名称以\texttt字体显示。我想我需要改变一些内容\a@paralgo(从algo.sty) 在下面的代码中,但我不知道如何做到这一点。

例如当我写

\begin{algorithm}{AlgoName}{  
test algo
\end{algorithm}

我想将 AlgoName 的字体更改为\texttt

\def\algorithm#1{%
  \ifa@numbered
  \refstepcounter{\a@counter}%
  \else
  \edef\@currentlabel{\noexpand\a@noargproc{#1}}%
  \fi
  \@ifnextchar[{\a@paralgo{#1}}{\a@genalgo{\qproc{#1}}}% match ]
  }
%
\def\a@paralgo#1[#2]{\a@genalgo{\qproc[{#2}]{#1}}}
%
\def\a@genalgo#1#2{%
  \list{\arabic{a@line}.\hfill}%
  {\usecounter{a@line}
    \itemsep 0pt
    \parsep 0pt
    \leftmargin 2em
    \rightmargin 0pt
    \labelwidth 2em
    \labelsep 0pt
    \let\\=\a@cr
    }
  \ifa@numbered
  \item[\textbf{Algorithm\ \thealgorithm}]
    \ignorespaces #2
  \else
  \item[\textbf{Algorithm\ {#1}}]
    \ignorespaces #2
  \fi
  \item
    }
\def\endalgorithm{\endlist}

答案1

您需要在定义中将其更改\textbf为两次(在下面的示例中标记的行):\texttt\a@genalgo% here

\documentclass{article}
\usepackage{algo}

\makeatletter
\def\a@genalgo#1#2{%
  \list{\arabic{a@line}.\hfill}%
  {\usecounter{a@line}
    \itemsep 0pt
    \parsep 0pt
    \leftmargin 2em
    \rightmargin 0pt
    \labelwidth 2em
    \labelsep 0pt
    \let\\=\a@cr
    }
  \ifa@numbered
  \item[\texttt{Algorithm\ \thealgorithm}]% here
    \ignorespaces #2
  \else
  \item[\texttt{Algorithm\ {#1}}]% here
    \ignorespaces #2
  \fi
  \item
    }
\makeatother

\begin{document}


\begin{algorithm}{}{}
test algorithm
\end{algorithm}

\end{document}

结果:

在此处输入图片描述

更新

对问题进行编辑后,更改必须应用于所提供的名称,因此您需要更改\a@noargproc\a@proc原始定义

\def\a@noargproc#1{{\it #1\/}}
\def\a@proc[#1]#2{{\it #2\/}{\rm ($#1$)}}

\def\a@noargproc#1{{\ttfamily #1}}
\def\a@proc[#1]#2{{\ttfamily #2}{\rmfamily ($#1$)}}

完整示例:

\documentclass{article}
\usepackage{algo}

\makeatletter
\def\a@noargproc#1{{\ttfamily #1\/}}
\def\a@proc[#1]#2{{\ttfamily #2}{\rmfamily ($#1$)}}
\makeatother

\begin{document}

\begin{algorithm}{testAlgo}{}
test algorithm
\end{algorithm}

\end{document}

结果:

在此处输入图片描述

顺便说一句,最好不要algo.sty直接更改;要么像我在示例中所做的那样在文档中进行更改,要么使用algo.sty不同的名称保存副本并在那里进行更改(当然,将这个保存的副本加载到您的包中.tex而不是原始algo包中)。

相关内容