我正在使用密码用于排版加密协议的包。但是,当我尝试使用案例时,我收到一条错误消息,提示额外的对齐标签已更改为 \cr。
我该如何纠正这个问题?这是相关代码。
\procedure{Example} {%
s_{i} = \begin{cases} r_{i} & if\,c[i]=0\\ r_{i}-x & otherwise \end{cases}
}
答案1
该包改变了其宏内部cryptocode
的含义。\\
使用\tabularnewline
。
\documentclass{article}
\usepackage{amsmath,cryptocode}
\begin{document}
\procedure{Example} {%
s_{i} =
\begin{cases}
r_{i} & \text{if $c[i]=0$} \tabularnewline
r_{i}-x & \text{otherwise}
\end{cases}
}
\end{document}
请注意,数学中的单词应正确处理为\text
。
更新
改变cryptocode.sty
品牌每一个嵌套对齐被破坏。解决方法:
\documentclass{article}
\usepackage{amsmath,cryptocode}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@pc@syntaxhighlight}{#1}{{#1}}{}{}% <--- missing braces around #1
\makeatother
\begin{document}
\procedure{Example} {%
s_{i} =
\begin{cases}
r_{i} & \text{if $c[i]=0$} \tabularnewline
r_{i}-x & \text{otherwise}
\end{cases}
}
\end{document}
答案2
显然,有一个新问题,这就是为什么@egreg 的答案在我的情况下不起作用的原因,只要 crpytocode 过程包含多行。例如,以下示例无法编译:
\documentclass{article}
\usepackage{amsmath,cryptocode}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@pc@syntaxhighlight}{#1}{{#1}}{}{}% <--- missing braces around #1
\makeatother
\begin{document}
\procedure{Example} {%
a = b \\
c
}
\end{document}
失败并显示错误消息“缺少}插入”。
但是,通过以下解决方法完全禁用(大部分未使用的)自动语法高亮功能可以:
\makeatletter
\renewcommand{\@pc@syntaxhighlight}[1]{#1}
\makeatother