有没有办法让 Latex 在其算法包中忽略区分大小写?

有没有办法让 Latex 在其算法包中忽略区分大小写?

我正在撰写一份由单独准备的文件组成的报告。不幸的是,几乎所有文档都包含以不同格式编写的算法,例如 \WHILE 和 \While 。我遇到一个问题,我需要更改某些文档中的每个算法,因为我需要将它们编译在一起。

有没有办法让乳胶忽略大小写的差异?

示例代码:

主文本

\documentclass[a4paper,12pt]{report}
\usepackage{algorithm, algpseudocode}
\begin{document}
\include{document1}
\include{document2}

\end{document}

文档1.tex

\begin{algorithm}
\begin{algorithmic}
\WHILE{A}
\STATE Do Something
\ENDWHILE
\end{algorithmic}
\end{algorithm}

文档2.tex

\begin{algorithm}
\begin{algorithmic}
\While{A}
\State Do Something
\EndWhile
\end{algorithmic}
\end{algorithm}

答案1

在第一个示例中,语法为 if for algorithmic。如果命令的语法相同,则可以执行

\newcommand{\WHILE}{\While}

其他命令也类似。

请注意,参数中的空格不会被忽略,并且\State括号中不带参数。

\documentclass[a4paper,12pt]{report}
\usepackage{algorithm, algpseudocode}

\newcommand{\WHILE}{\While}
\newcommand{\ENDWHILE}{\EndWhile}
\newcommand{\STATE}{\State}

\begin{document}
\begin{algorithm}
\begin{algorithmic}
\WHILE{A}
\STATE Do Something
\ENDWHILE
\end{algorithmic}
\end{algorithm}

\begin{algorithm}
\begin{algorithmic}
\While{A}
\State Do Something
\EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}

填写要定义的命令列表不会花很长时间。

只是为了好玩,一些命令将整个列表大写;*开头的表示我们还想要相关的\END...命令。

\documentclass[a4paper,12pt]{report}
\usepackage{algorithm, algpseudocode,xparse}

\ExplSyntaxOn
\NewDocumentCommand{\CAPITALIZE}{m}
 {
  \clist_map_inline:nn { #1 } { \hope_capitalize:w ##1 \q_stop }
 }

\cs_new_protected:Npn \hope_capitalize:w
 {
  \peek_charcode_remove:NTF { * }
   { \__hope_capitalize_end:w }
   { \__hope_capitalize_single:w }
 }

\cs_new_protected:Npn \__hope_capitalize_single:w #1 \q_stop
 {
  \cs_set_eq:cc { \str_uppercase:n { #1 } } { #1 }
 }
\cs_new_protected:Npn \__hope_capitalize_end:w #1 \q_stop
 {
  \cs_set_eq:cc { \str_uppercase:n { #1 } } { #1 }
  \cs_set_eq:cc { \str_uppercase:n { END#1 } } { End#1 }
 }
\ExplSyntaxOff

\CAPITALIZE{*While,State}

\begin{document}
\begin{algorithm}
\begin{algorithmic}
\WHILE{ A}
\STATE Do Something
\ENDWHILE
\end{algorithmic}
\end{algorithm}

\begin{algorithm}
\begin{algorithmic}
\While{A}
\State Do Something
\EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}

相关内容