我目前正在写我的硕士论文,我正在使用 algorithm2e 编写伪代码。我经常使用SetKwData
它来显示数据类型。但是,我想稍微改变一下使用参数时的显示方式。
例如,如果我想显示一个在键和数据上都是多态的键值映射数据类型,我会写类似这样的内容
\SetKwData{DFoo}{Foo}
\SetKwData{DBar}{Bar}
\SetKwData{DMap}{Map}
\Dmap{\DFoo, DBar}
然后编译后的文档看起来会像这样
Map(Foo, Bar)
在我看来,这看起来太像函数调用了。我想将括号改为类似这样的形式Map<Foo, Bar>
。
答案1
在下面的示例中,根据\SetKwData{Kw}{the text}
中的定义algorithm2e.sty
,提供了一个通用宏\SetKwMetaData{Kw}{the text}{left delimiter}{right delimiter}
,允许您指定分隔符。这些分隔符在 中被硬编码为(
和。)
\SetKwData
\documentclass{article}
\usepackage{algorithm2e}
\makeatletter
% \SetKwMetaData{Kw}{the text}{left delimiter}{right delimiter}
\newcommand{\SetKwMetaData}[4]{%
\algocf@newcommand{@#1}[1]{\DataSty{#2#3}\ArgSty{##1}\DataSty{#4}}%
\algocf@newcommand{#1}{%
\@ifnextchar\bgroup{\csname @#1\endcsname}{\DataSty{#2}\xspace}}%
}%
\makeatother
\SetKwData{DFoo}{Foo}
\SetKwData{DBar}{Bar}
\SetKwMetaData{DMap}{Map}{$\langle$}{$\rangle$}
\begin{document}
\begin{algorithm}
\DFoo{a}\\
\DMap{\DFoo, \DBar}
\end{algorithm}
\end{document}