当前位置: 代码迷 >> 综合 >> TexStudio 编辑 Latex 时插入算法伪代码描述块一直报错:Missing \endcsname inserted. \While
  详细解决方案

TexStudio 编辑 Latex 时插入算法伪代码描述块一直报错:Missing \endcsname inserted. \While

热度:59   发布时间:2024-01-14 06:46:55.0

问题描述

  • 使用 TexStudio 编辑 latex 时插入算法伪代码描述块一直报错:Missing \endcsname inserted. \While,如下图:

原因分析

  • 谷歌了很多资料,该删的文件也删了,该重建的也重建了,该替换的包也都替换了,算法伪代码描述块也换了很多样式,但是一直报这个错,或者解决了一个,又出现另一个,就是无法编译成功
  • 最后回过头观察 latex 文档模板,最后发现在导言区模板已经引入了 \usepackage{algorithmic} 包,这个包与添加算法伪代码所要使用的
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}  % 如果不想在算法伪代码模块中显示 end for 和 end while,则使用  %\usepackage[noend]{algpseudocode}

解决方法

  • 注释掉模板预先导入的 \usepackage{algorithmic} 包
  • 导入 \usepackage{algorithm}、\usepackage{algorithmicx}、\usepackage{algpseudocode} 包
  • 实例代码 1:
\begin{algorithm}[t]\caption{Name of your Algrithm}\label{alg:reference label}{\bf Require:}\\ % Input\hspace*{0.05in} Input1: $X$\\\hspace*{0.05in} Input2: $Y$\\{\bf Require:}\\ % Output\hspace*{0.05in} Output1: $A$\\\hspace*{0.05in} Output2: $B$\\\hspace*{0.05in} Output2: $Z$\\\begin{algorithmic}[1] % remove [1] if you do not need row number in your algorithm\While{The algorithm has not converged}\For{$i in range(N)$}\State Sample $x_{i}$ from $X$.\State Sample $y_{i}$ from $Y$.\State $A = \sqrt{x^{2} + y^{2}}$\State $B = \sum_{1}^{N}x_{i}*y_{i}$\EndFor\State $Z = A + B$\EndWhile\end{algorithmic}
\end{algorithm}
  • 实例代码1 效果

  • 实例代码 2:

\begin{algorithm}[t]\caption{Name of your Algrithm}\label{alg:reference label}{\bf Require:}\\ % Input\hspace*{0.05in} Input1: $X$\\\hspace*{0.05in} Input2: $Y$\\{\bf Require:}\\ % Output\hspace*{0.05in} Output1: $A$\\\hspace*{0.05in} Output2: $B$\\\hspace*{0.05in} Output2: $Z$\\\begin{algorithmic}\While{The algorithm has not converged}\For{$i in range(N)$}\State Sample $x_{i}$ from $X$.\State Sample $y_{i}$ from $Y$.\State $A = \sqrt{x^{2} + y^{2}}$\State $B = \sum_{1}^{N}x_{i}*y_{i}$\EndFor\State $Z = A + B$\EndWhile\end{algorithmic}
\end{algorithm}
  • 实例代码 2 的效果
  相关解决方案