在环境中定义可重复使用的字符串

在环境中定义可重复使用的字符串

我编写的文档严重依赖“枚举”环境。我想将该环境内的任何特定项目转换为可以在其他地方使用的变量。这样做的目的是确保与我稍后必须重复的长标题保持一致。

理想情况下,字符串存储方法不会检查 @ 或 _ 等特殊字符。
如果我可以使用数字作为字符串名称就更好了。

\begin{enumerate}

    (piles of content)  

    \item\label{itm:01} \def\AA{Heading text.} \rAA\

\end{enumerate}

(piles of content)

\rAA

这会引发“未定义”错误。可以在环境之外定义命令并在环境内使用它,但是使用扩展列表和多个标题,反复去其他地方查找我所在的部分会减慢我的工作流程。

我是否忽略了一种简单的方法(甚至不那么简单的方法)?

答案1

环境形成一个组,因此\def环境结束后,其中的 不会继续存在。您需要的是\gdef,但您的\AA是一个不应该做的事情的完美示例,就像\AA字体相关的命令一样(它会产生 Å)。

您可以定义自己的检查,用来\@ifdefinable检查命令的可用性并\gdef全局定义该命令,从而超越组结构。

\makeatletter
\newcommand{\definestring}[2]{\@ifdefinable{#1}{\gdef#1{#2}}}
\makeatother

完整示例:

\documentclass{article}

\makeatletter
\newcommand{\definestring}[2]{\@ifdefinable{#1}{\gdef#1{#2}}}
\makeatother

\begin{document}

\begin{enumerate}
\item\label{itm:01} \definestring\rAA{Heading text.} \rAA
\end{enumerate}

Now we use \rAA

\end{document}

在此处输入图片描述

相关内容