我在用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
包中)。