用例中的额外对齐标签已更改为 \cr

用例中的额外对齐标签已更改为 \cr

我正在使用密码用于排版加密协议的包。但是,当我尝试使用案例时,我收到一条错误消息,提示额外的对齐标签已更改为 \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

相关内容