![在表格环境中定义标签](https://linux22.com/image/356888/%E5%9C%A8%E8%A1%A8%E6%A0%BC%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%AE%9A%E4%B9%89%E6%A0%87%E7%AD%BE.png)
我正在使用宏在表格环境中定义某些标签,但是当我稍后引用这些标签时,显示的文本是章节编号而不是所需的标签。
实现期望结果的最简单方法是什么?(具体情况请参见下面的代码。)
我不喜欢的一个解决方案是:将标签名称传递到“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}
对行尾要更加小心%
;你有一个不必要的地方,却错过了两个。