如图,如何让其中显示正确:
\documentclass{article}
% 定义 section 格式 RTR
% 定义一个宏来设置计数器
\newcommand{\setStringCounter}[2]{%
\expandafter\def\csname #1\endcsname{#2}%
}
% 定义一个宏来读取计数器
\newcommand{\getStringCounter}[1]{%
\csname #1\endcsname
}
\setStringCounter{Reviewer}{NULL} % 定义空白审稿人
\newcommand{\RTR}[1]{\section*{Responses to Reviewer #1}\addcontentsline{toc}{section}{Responses to Reviewer #1}\setStringCounter{Reviewer}{#1}} % 该定义命令中填写审稿人编号
\newcommand{\Rref}[1]{Reviewer \getStringCounter{Reviewer}} % 引用第 \Reviewer 个审稿人
\begin{document}
The following should be: \textbf{Reviewer o4m35}:
\Rref{o4m35}
% 关于为何不使用 \section:希望目录中条目开头没有编号
\tableofcontents
\RTR{o4m35}\label{o4m35}
\end{document}
关于为什么审稿人不是数字编号:有些地方,特别是计算机的一些会议,会用随机代码给审稿人编号,比如 Reviewer 6et2
我感觉你确实应该补充一下你的具体需求(比如一个完整的审稿回复应该是什么样子,你已经实现的是什么样子),我看不出这里的Reviewer
为什么是一个计数器Counter
,同时在你的聊天记录中似乎也有\ref
的需求,但在你上述的代码中并未体现。
你上面出现结果为为Null
,是因为你在调用\Rref{o4m35}
时仍未经过\setStringCounter{Reviewer}{o4m35}
,于是为\setStringCounter{Reviewer}{NULL}
定义的默认值。
事实上你把这两句放到\RTR{o4m35}
之后即可。
我不知道是不是能回答你的问题。而且你的代码中\setStringCounter
和\getStringCounter
给我的感觉就是把你所谓的"字符串"装进宏里面然后再拿出来,个人觉的目的不是很明确。
这里的具体需求是在其他审稿人的回复中引用对应 label (或者用其他可以实现的命令都可以)所指定的审稿人编号(名称)。
比如在最开头的总编辑回复中写“具体请参见 ref{Reviewer A} 的回复”,所以使用 ref 的位置很可能比 label 的位置靠前,不可能放到后面。
另外关于为何不用 section 和 nameref 或者 section* + addcontentsline + nameref:前者会在目录中产生编号,有时会出现 “1 Reviewer 1” 的目录条目,非常难看;而后者虽然不会产生目录编号,引用却是无效的(是一个空白)