在表格环境中定义标签

在表格环境中定义标签

我正在使用宏在表格环境中定义某些标签,但是当我稍后引用这些标签时,显示的文本是章节编号而不是所需的标签。

实现期望结果的最简单方法是什么?(具体情况请参见下面的代码。)

我不喜欢的一个解决方案是:将标签名称传递到“FOOFOO”宏中。我不一定想为所有 FOOFOO 都贴上标签

\documentclass{article}

\newcounter{foo}
\renewcommand{\thefoo}{F\arabic{foo}}
\newcommand{\FF}{
  \refstepcounter{foo}\textbf{\thefoo}
}

\newenvironment{footab}{\begin{tabular}{c|c|c}\hline}{\end{tabular}}

\newcommand{\FOOFOO}[2]{%
\FF & \textbf{#1} & #2 \\\hline%
}

\begin{document}

\section{My section}
\label{sec:my-section}

\begin{footab}
\FOOFOO{One}{First example}\label{foo:first}
\FOOFOO{Two}{Second example \label{foo:second}}
\end{footab}

Now I write some stuff referring to \ref{foo:first} (should be F1) and
\ref{foo:second} (should be F2).

\end{document}

输出如下所示:

在此处输入图片描述

答案1

当包含的单元格\refstepcounter结束时,的值\@currentlabel将丢失并恢复前一个值。

您可以将标签设置为可选参数\FOOFOO

\documentclass{article}

\newcounter{foo}
\renewcommand{\thefoo}{F\arabic{foo}}
\newcommand{\FF}{%
  \refstepcounter{foo}\textbf{\thefoo}%
}

\newenvironment{footab}{\begin{tabular}{c|c|c}\hline}{\end{tabular}}

\newcommand{\FOOFOO}[3][]{%
  \FF#1 & \textbf{#2} & #3 \\\hline
}

\begin{document}

\section{My section}
\label{sec:my-section}

\begin{footab}
\FOOFOO[\label{foo:first}]{One}{First example}
\FOOFOO[\label{foo:second}]{Two}{Second example}
\FOOFOO{Three}{Third example}
\end{footab}

Now I write some stuff referring to \ref{foo:first} (should be F1) and
\ref{foo:second} (should be F2).

\end{document}

在此处输入图片描述

对行尾要更加小心%;你有一个不必要的地方,却错过了两个。

相关内容