LaTeX算法代码报错求助:未定义控制序列、缺失$及括号匹配错误
问题解决与代码修正
错误原因及对应修复方案
\BlankLine未定义:你当前使用的
algorithmic宏包不支持\BlankLine命令,有两种解决方式:- 改用
algpseudocode宏包(替换原algorithmic),该宏包原生支持\BlankLine; - 继续使用
algorithmic,用\STATE{}替代\BlankLine生成空行。
- 改用
缺失$符号:代码中
$_$是错误写法,LaTeX中下划线需用\_表示,$_$会导致$符号不匹配,引发语法错误。缺失{和}:同样由
$_$的错误写法导致解析混乱,替换为\_即可解决。
修正后的代码示例
方案一:使用algpseudocode宏包(推荐)
宏包部分调整:
\usepackage{moreverb} \usepackage{graphicx} \usepackage{ifthen} \usepackage{amsmath,amsfonts} \usepackage{algorithm} \usepackage{algpseudocode} % 替换原algorithmic宏包
算法代码:
\begin{algorithm}[b] \caption{Find aa} \BlankLine \State $a \leftarrow \text{input}$; \BlankLine \State $\text{List1} \leftarrow \text{x\_x\_x\_x}(a,a)$; \BlankLine \State $\text{List2} \leftarrow \text{x\_x\_x\_x}(a,\text{List1},\text{List2})$; \BlankLine \State $H \leftarrow a(a,a,a,a)$; \BlankLine \Return $x$; \end{algorithm}
方案二:继续使用algorithmic宏包
宏包保持原配置,算法代码:
\begin{algorithm}[b] \caption{Find aa} \STATE{} % 替代\BlankLine \STATE $a \leftarrow \text{input}$; \STATE{} \STATE $\text{List1} \leftarrow \text{x\_x\_x\_x}(a,a)$; \STATE{} \STATE $\text{List2} \leftarrow \text{x\_x\_x\_x}(a,\text{List1},\text{List2})$; \STATE{} \STATE $H \leftarrow a(a,a,a,a)$; \STATE{} \STATE \Return $x$; \end{algorithm}
额外说明
- 算法语句必须用
\State(algpseudocode)或\STATE(algorithmic)包裹,这是宏包要求的语法规范; - 文本类标识(如
input、List1)用\text{}包裹(依赖amsmath宏包,你已加载),避免被解析为数学公式; - 所有下划线统一用
\_表示,禁止直接写_或$_$。
内容的提问来源于stack exchange,提问作者AlessandroIV
相关产品推荐
相关产品推荐

