我正在尝试写一篇论文,其中包含一系列自动编号的内联引文。
我定义了一个\newcommand
来执行此操作,一切都运行良好,直到我尝试将当前数字保存到变量中,以便我可以引用它,例如在表中。显然\label
会选择当前部分,所以这不起作用。如果\label
采用第二个参数以便可以写入,\label{mylabel}{mycounter}
那么这将是完美的,但\label
似乎只采用一个参数。
我尝试修改我的 newcommand,以便它定义(使用\def
或\newcommand
)一个新标签(每次调用时作为附加参数传递给命令,但我总是得到语法错误)。目前我已经恢复使用定理环境,但这有两个问题(1)这意味着文本不是内联的,而是通过换行符与周围文本分隔开,其次似乎不可能将定理放在图形标题内。我尝试使用\savebox
后者,但似乎也不起作用。
任何帮助我都感激不尽!谢谢。
答案1
感谢你们的两次回复。我不知道该如何进一步执行第二个建议,但通过更多的谷歌搜索,我找到了这个etoolbox
软件包,现在我有了一个解决方案:
\documentclass{article}
\usepackage{xcolor}
\usepackage{etoolbox}
\newcounter{promptcounter}
\setcounter{promptcounter}{0}
\def\prompt#1#2{\addtocounter{promptcounter}{1}\csdef{#1}{\thepromptcounter}\underline{Prompt-\thepromptcounter: }{\textcolor{teal}{\emph{#2}}}}
\begin{document}
This is a test document. \\prompt\{x\}\{y\} should expand to \textcolor{red}{Prompt-1: y} but also define \\x to be the value of {\textbackslash}thepromptcounter.
\prompt{xxx}{some text}. The value of {\textbackslash}xxx is \xxx. The use of {\textbackslash}etoolbox and {\textbackslash}csdef was critical - it gives an error with plain {\textbackslash}def.
End of test document
\end{document}