我正在使用algpseudocodex
包以在 LuaLaTeX 中显示伪代码。我想将注释开头的符号更改\smalltriangleright
为:
\usepackage[beginComment=$\smalltriangleright$~]{algpseudocodex}
不幸的是,我收到以下错误:
! Undefined control sequence.
\reserved@b ...{beginComment=$\smalltriangleright
$~}][{}]\noexpand \@pkgext...
l.9
它与默认的 配合得很好\triangleright
。此外,在文档中, 也\smalltriangleright
按预期工作。
以下是 MWE:
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\usepackage[beginComment=$\smalltriangleright$~]{algpseudocodex} % doesn't work
%\usepackage[beginComment=$\triangleright$~]{algpseudocodex} % works
\begin{document}
$\smalltriangleright$ % works
\end{document}
(在 Overleaf、TeX Live 2021 上测试)
关于我如何来\smalltriangleright
这里工作,您有什么想法吗?
答案1
为了使其工作,您需要重新设置开始短注释、开始长注释和结束长注释的默认符号。
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\usepackage{algpseudocodex}
%****************************************** added <<<<<<<<<<<<<<
\setkeys{algpx}{beginComment=$\smalltriangleright$~}
\setkeys{algpx}{beginLComment=$\smalltriangleright$~}
\setkeys{algpx}{endLComment=~$\smalltriangleleft$}
%******************************************
\begin{document}
\begin{algorithmic}[1]
\State $x \gets y^2$
\LComment{The next two lines increment
both $x$ and $y$.}
\State $x \gets x + 1$
\Comment{Increment $x$.}
\State $y \gets y + 1$
\Comment{Increment $y$.}
\end{algorithmic}
\bigskip
\begin{algorithmic}% keep the changes local <<<<<
\setkeys{algpx}{beginComment=//~}
\setkeys{algpx}{beginLComment=/*~}
\setkeys{algpx}{endLComment=~*/}
\LComment{Long comment.}
\State $x \gets 0$ \Comment{Short comment.}
\end{algorithmic}
\end{document}
您可能希望在本地保留更改。
\begin{algorithmic}
\setkeys{algpx}{beginComment=//~}
\setkeys{algpx}{beginLComment=/*~}
\setkeys{algpx}{endLComment=~*/}
\LComment{Long comment.}
\State $x \gets 0$ \Comment{Short comment.}
\end{algorithmic}
答案2
与此同时我找到了另一个答案。
我意识到在 中unicode-math
定义\smalltriangleright
(和其他符号)\AtBeginDocument
。从文档:
unicode 数学通过 定义宏
\AtBeginDocument
,即延迟定义直到\begin{document}
满足。
因此,algpseudocodex
之后的加载有效:
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\AtBeginDocument{%
\usepackage[beginComment=$\smalltriangleright$~]{algpseudocodex}
}
\begin{document}
\begin{algorithmic}
\State $x \gets 0$ \Comment{Short comment.}
\end{algorithmic}
\end{document}