如何停止\label 打印参考编号?

如何停止\label 打印参考编号?

有没有办法将引用分配给某个内容(使用\label),但实际上不会让它显示在文档中?我仍然想在文档的后面部分交叉引用它?

例如,我有一个名为的计数器\productitem,我想做这样的事情:

\productitem\label{initialitem}\\ %Lorem ipsum

然后在文档的后面:

\ref{initialitem} is sold...

现在此代码将打印 的参考编号initialitem,然后稍后引用该编号。但是,我不希望打印初始参考编号,也不希望为其留出任何空格或任何空行。

我知道您可能想知道我为什么要这样做。我正在制作产品列表;初始产品不可用(或与特定列表无关),因此无法列出。但是,确实需要列出它的变体。我想使用初始产品的参考编号作为变体产品编号的基础。

答案1

您可以定义一个计数器并让\productitem\refstepcounter计数器:

\documentclass{article}

\newcounter{productitem}
\makeatletter
\newcommand{\productitem}{\@bsphack\refstepcounter{productitem}\@esphack}
\makeatother

\begin{document}

\productitem\label{initialitem}

See item \ref{initialitem}.

\end{document}

如果仅使用\productitem是设置一个新产品,并且将总是后面跟着一个\label,最好(也更方便)设置一个宏来执行这两项操作:

\documentclass{article}

\newcounter{productitem}
\newcommand{\productitem}{\refstepcounter{productitem}\label}

\begin{document}

\productitem{initialitem}

See item \ref{initialitem}.

\end{document}

答案2

该命令的一个明显修改\refstepcounter是将当前引用设置为给定计数器的值,而不增加它;然后\label可以像往常一样发出以捕获当前引用值。以下是此技术的一个示例:

% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

\usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

\makeatletter

% Define core functionality:
\newcommand*\refbutnotstepcounter[1]{%
    \protected@edef\@currentlabel
        {\csname p@#1\endcsname\csname the#1\endcsname}%
}

\makeatother

% Define handy shortcut:
\newcommand*{\photocnt}[2]{%
    \refbutnotstepcounter{#1}\label{#2}%
}

% Test counter:
\newcounter{FOO}



\begin{document}

\setcounter{FOO}{123}\photocnt{FOO}{value-1}
\addtocounter{FOO}{300}\photocnt{FOO}{value-2}

The first value was $\ref{value-1}$, the second (and current) value is
$\ref{value-2}$.

\stepcounter{FOO}\photocnt{FOO}{value-3}
\setcounter{FOO}{-1}
In mid-paragraph \photocnt{FOO}{value-4} too.
\addtocounter{FOO}{100}\photocnt{FOO}{value-5}

We have now three more ``photographs'': $\ref{value-3}$, $\ref{value-4}$, and
$\ref{value-5}$.

\end{document}

相关内容