有没有办法为算法环境设置特定的字体系列,特别是针对其中的注释?
答案1
这algorithmicx
捆提供了一个钩 \ALG@beginalgorithmic
在环境开始时执行algorithmic
。默认情况下,它设置为\relax
,不执行任何操作。但是,您可以更新它以设置字体大小:
\documentclass{article}
\usepackage{algpseudocode,algorithm}
\makeatletter
\algrenewcommand\ALG@beginalgorithmic{\footnotesize}
\makeatother
\begin{document}
\begin{algorithm}
\caption{Euclid’s algorithm}\label{euclid}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of $a$ and $b$}
\State $r \gets a \bmod b$
\While{$r \not= 0$}\Comment{We have the answer if $r$ is 0}
\State $a \gets b$
\State $b \gets r$
\State $r \gets a \bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is $b$}
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
如果您只想更新 s \Comment
,请重新定义\algorithmiccomment
以满足您的需求。也许您会对以下内容感兴趣:
\algrenewcommand\algorithmiccomment[2][\normalsize]{{#1\hfill\(\triangleright\) #2}}
它将默认大小设置为\normalsize
。它允许你做一些像这样荒谬的事情:
\documentclass{article}
\usepackage{algpseudocode,algorithm}
\makeatletter
\algrenewcommand\ALG@beginalgorithmic{\footnotesize}
\algrenewcommand\algorithmiccomment[2][\normalsize]{{#1\hfill\(\triangleright\) #2}}
\makeatother
\begin{document}
\begin{algorithm}
\caption{Euclid’s algorithm}\label{euclid}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of $a$ and $b$}
\State $r \gets a \bmod b$
\While{$r \not= 0$}\Comment[\tiny]{We have the answer if $r$ is 0}
\State $a \gets b$
\State $b \gets r$
\State $r \gets a \bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment[\Large]{The gcd is $b$}
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
虽然我已经调整了字体尺寸在上面的例子中,你还可以调整字体家庭以类似的方式。
这algorithms
捆也提供了一个algorithmic
环境。但是,它更加死板(不太灵活),因为它algorithmic
每次调用环境时都会重新定义整个结构。因此,特定于环境的更改非常繁琐。下面是一个示例,它添加了可能的字体更改(通过\setalgorithmicfont{<font>}
)和对常规的调整\COMMENT
(传递给\algorithmiccomment
):
\documentclass{article}
\usepackage{algorithmic,algorithm,xpatch}
\xpatchcmd{\algorithmic}{\setcounter}{\algorithmicfont\setcounter}{}{}
\providecommand{\algorithmicfont}{}
\providecommand{\setalgorithmicfont}[1]{\renewcommand{\algorithmicfont}{#1}}
\renewcommand{\algorithmiccomment}[1]{{\tiny\hfill$\triangleright$ #1}}
\begin{document}
\setalgorithmicfont{\footnotesize}
\begin{algorithm}
\caption{Euclid’s algorithm}\label{euclid}
\begin{algorithmic}[1]
\STATE $r \gets a \bmod b$
\WHILE{$r \not= 0$}
\STATE $a \gets b$
\STATE $b \gets r$\COMMENT{A comment}
\STATE $r \gets a \bmod b$
\ENDWHILE
\STATE \textbf{return} $b$\COMMENT{The gcd is $b$}
\end{algorithmic}
\end{algorithm}
\end{document}