需要 LaTeX 自动更新表格中的参考编号

需要 LaTeX 自动更新表格中的参考编号

我需要在表格中分配一个参考编号,这样当参考编号的初始部分发生变化时,它会自动更新末尾的编号并重新启动计数器。例如,我可能有 FX-##,并且我希望 LaTeX 枚举 FX-01、FX-02 等。然后我可能会更改为 EL-##,并且我需要 LaTeX 重置计数器,因为我已经开始了一个新的参考编号,所以它将变成 EL-01。我还希望能够标记参考编号并在以后引用它们。当我稍后引用它们时,我希望显示完整的参考编号,FX-01 等。我不知道从哪里开始,所以包含了非常基本的代码。

\documentclass{article}
\begin{document}
\begin{table}[]
\begin{tabular}{|l|l|l|}
FX-01\label{fire}  & Fire & Call for help \\ 
FX-02\label{explo} & Explosion  & Run away \\
EL-01\label{elec} & Electrocution & Contact doctor  \\ 
\end{tabular}
\end{table}
\end{document}

答案1

像这样吗?

在此处输入图片描述

我的建议是使用categories(例如 FX 或 EL),每次引入新类别时,计数器都会增加,本地元素计数器会重置。宏\newcatelement负责步进元素计数器、最终标签和数字的FX-XX输出XX

\documentclass{article}


\usepackage{xparse}


\newcounter{categorycounter}
\newcounter{elementcounter}[categorycounter]


\makeatletter


\renewcommand{\theelementcounter}{%
  \@currentcategory-%
  \ifnum\value{elementcounter} <9\relax%
  0\number\value{elementcounter}%
  \else
  \arabic{elementcounter}%
  \fi
}

\newcommand{\newcategory}[1]{%
  \gdef\@currentcategory{#1}%
  \refstepcounter{categorycounter}%
}
\NewDocumentCommand{\newcatelement}{+o}{%
  \refstepcounter{elementcounter}%
  \IfValueT{#1}{\label{#1}}%
  \theelementcounter%
}

\makeatother

\usepackage{hyperref}


\begin{document}

\begin{table}[]
\begin{tabular}{|l|l|l|}
  \newcategory{FX}\newcatelement[fire]  & Fire & Call for help \\ 
  \newcatelement[explo] & Explosion  & Run away \\
  \newcategory{EL}\newcatelement[elec] & Electrocution & Contact doctor  \\ 
\end{tabular}
\end{table}

See \ref{fire} or \ref{explo}, but also \ref{elec}
\end{document}

使用更好的设置进行更新

\documentclass{article}

\usepackage{xcolor}
\usepackage{xparse}


\newcounter{categorycounter}
\newcounter{elementcounter}[categorycounter]


\makeatletter


\newcommand{\@categoryseparator}{-}

\NewDocumentCommand{\setcategoryseparator}{+m}{%
  \renewcommand{\categoryseparator}{#1}%
}



\renewcommand{\theelementcounter}{%
  \@currentcategory\@categoryseparator%
  \ifnum\value{elementcounter} <9\relax%
  0%
  \fi
  \arabic{elementcounter}%
}


\def\@currentcategory{}

\NewDocumentCommand{\newcategory}{m}{%
  \gdef\@currentcategory{#1}%
  \refstepcounter{categorycounter}%
  \ignorespaces
}

\NewExpandableDocumentCommand{\newcatelement}{s+o+m+m}{%
  \refstepcounter{elementcounter}%
  \edef\@currentlabelname{#4}%
  \IfValueT{#2}{\label{#2}}%
  \theelementcounter& #3 & #4 \IfBooleanF{#1}{\tabularnewline}%
}

\makeatother

\usepackage{hyperref}




\begin{document}

\begin{table}[]
  \begin{tabular}{|*{3}{l|}}
    \newcategory{FX}
    \newcatelement[fire]{Fire}{Call for help}%
    \newcatelement[explo]{Explosion}{Run away}% 
    \newcategory{EL}
    \newcatelement[elec]{Electrocution}{Contact doctor}
  \end{tabular}
\end{table}

In case of \ref{fire} just \colorbox{yellow}{\nameref*{fire}} or but in case of \ref{explo} \colorbox{red}{\color{white}\bfseries\nameref*{explo}}. Take care of \ref{elec}!
\end{document}

在此处输入图片描述

相关内容