我关注了一些 QA 链接,例如这在 tex stackexchange 中使用此示例 tex 代码:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage[algosection, boxruled, linesnumbered]{algorithm2e}
\SetProcNameSty{textbf}
\SetProcArgSty{textbf}
\SetProgSty{textbf}
\begin{document}
\begin{procedure}
\SetKwProg{Fn}{Function}{ is}{end}
\Fn{afunc(i: int) : int}{return 0\;}
\caption{removemarked()}
\label{alg:removemarked}
\end{procedure}
\end{document}
我还查看了官方文件:
\SetKwProg{Prog}{Title}{is}{end} Env 是一个以“Title”(CapSty 样式)开头的块,后面跟着ProgSty 中的参数后跟“is”,然后是块内的“text”,以“end”结尾。
在输出 pdf 中,程序字体已被修改为粗体,\SetProcNameSty{textbf}
但 KwProg 参数afunc(i: int) : int
还没有改变ProgSty
:
一种解决方法:
然后我尝试使用直接格式化 arg 文本\bfseries
,即\Fn{\bfseries afunc(i: int) : int}{return 0\;}
,它按预期工作。
问:如何使用KwProg
类似的方法设置 arg 字体样式\SetProgSty
,例如通过使用上面的方法修改默认斜体textbf
?
答案1
添加\renewcommand{\SetProgSty}[1]{\renewcommand{\ProgSty}[1]{\textnormal{\csname#1\endcsname{##1}}\unskip}}%
之后\SetProgSty{textbf}
,问题就解决了。
也许这个问题太具体了,不是一个好问题。然后我花了一些时间重新检查它,因为它已经有一段时间没有回复了。
灵感来自这,我查看了algorithm2e
代码(抱歉发帖时没看,等我编程时间长了再考虑寻求代码帮助),发现
\newcommand{\ProgSty}[1]{\textnormal{\emph{#1}}\unskip}%\SetProgSty{emphg}
\newcommand{\SetProgSty}[1]{\renewcommand{\ArgSty}[1]{\textnormal{\csname#1\endcsname{##1}}\unskip}}%
...
\newcommand{\SetKwProg}[4]{%\SetKwProg{Env}{Title}{is}{end}
\algocf@newcmdside@koif{#1}{\KwSty{#2}\ifArgumentEmpty{#2}\relax{\ }\ProgSty{##2}\KwSty{#3}\ifArgumentEmpty{##1}\relax{ ##1}\algocf@block{##3}{#4}{##4}}%
因为\SetKwProg
用了\ProgSty
但是\SetProgSty
没有按照代码改,所以原来的\SetProgSty
不行,于是就想到了上面的解决办法。
希望这可以为未来的读者提供帮助。