![当使用 algorithmicx 时 algorithmicrequire 未定义](https://linux22.com/image/317125/%E5%BD%93%E4%BD%BF%E7%94%A8%20algorithmicx%20%E6%97%B6%20algorithmicrequire%20%E6%9C%AA%E5%AE%9A%E4%B9%89.png)
我正在使用algorithmic
和algorithm
编写算法:
\usepackage[noend]{algorithmic}
\usepackage{algorithm}
\renewcommand{\algorithmicrequire}{\textbf{Input: }}
\renewcommand{\algorithmicensure}{\textbf{Output: }}
现在我需要使用algorithmicx
而不是algorithmic
,以便使用\algstore{myalg}
。因为我的算法太长,无法放在一页中。
\usepackage{algorithm}
\usepackage{algorithmicx}
\algnewcommand\algorithmicinput{\textbf{Input:}}
\algnewcommand\algorithmicoutput{\textbf{Output:}}
我编译该Tex
文件后,出现以下错误:
! Undefined control sequence.
l.219 \REQUIRE
那么如何解决这个问题呢?
谢谢
答案1
考虑使用\Require
而不是\REQUIRE
。LaTeX 区分大小写。下面是\Require
我为我的下一个LaTeX 书,作为展示几个功能的演示。
\documentclass{article}
\usepackage{dsfont}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\usepackage{mathtools}
\newcommand{\minbox}[2]{%
\mathmakebox[\ifdim#1<\width\width\else#1\fi]{#2}}
\newcommand{\Let}[2]{\State $ \minbox{1em}{#1} \gets #2 $}
\algnewcommand{\Local}{\State\textbf{local variables: }}
\begin{document}
\begin{algorithm}
\caption{Mandelbrot set}
\label{alg:mandelbrot}
\begin{algorithmic}[1]
\Require{$c_x, c_y, \Sigma_{\max} \in \mathds{R},
\quad i \in \mathds{N}, \quad i_{\max} > 0,
\quad \Sigma_{\max} > 0$}
\Function{mandelbrot}{$c_x, c_y, i_{\max},
\Sigma_{\max}$}
\Local{$x, y, x^\prime, y^\prime, i, \Sigma$}
\Let{x, y, i, \Sigma}{0}
\Comment{initial zero value for all}
\While{$\Sigma \leq \Sigma_{\max}$
and $i < i_{\max}$}
\Let{x^\prime}{x^2 - y^2 + c_x}
\Let{y^\prime}{2xy + c_y}
\Let{m}{x^\prime}
\Let{y}{y^\prime}
\Let{\Sigma}{x^2 + y^2}
\EndWhile
\If{$i < i_{\max}$}
\State \Return{$i$}
\EndIf
\State\Return{0}
\EndFunction
\end{algorithmic}
\end{algorithm}
\end{document}
为了完整起见,在LaTeX 社区论坛该问题发布在此主题中:“如果算法太长,如何继续显示“。