LaTeX 中宏生成的标签

LaTeX 中宏生成的标签

我为一些表格创建了一个宏,以便让它们都采用相同的样式。我想在文档正文中引用其中一些表格,因此在我的宏中它们会得到一个标签。不幸的是,即使我运行了几次,它总是显示“是”。

参考第 2 页上的“tab:mess-2_2f”未定义

这是我的宏:

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{float}
\usepackage{longtable}
\usepackage{color}
\usepackage{siunitx}
\usepackage[table]{xcolor}
\usepackage{colortbl}

\def\messwerte#1#2#3#4#5#6{
\begin{minipage}{\textwidth}
\centering
\begin{minipage}{#2\textwidth}
\begin{longtable}{c}
\arrayrulecolor{blue}
\rowcolors{2}{blue!20}{white}
\begin{tabular}{*{#1}{l|}l}
\rowcolor{blue!40}
#3
\\ \hline
#4
\end{tabular}
\\
\caption{#5}
\label{tab:mess-#6}
\end{longtable}
\end{minipage}
\end{minipage}
}

在文档中我是这样使用它的:

\messwerte{1
}{0.4
}{$U$&\textbf{$n$ in \si[per-mode = reciprocal]{\min^{-1}}}
}{\num{110}&\num{2250}\\
\num{60}&\num{1310}\\
}{Messwerte
}{2_2f
}

我尝试像这样引用它:

\ref{tab:mess-2_2f}

答案1

你有

{2_2f
}

\label{tab:mess-2_2f }不产生\label{tab:mess-2_2f}

无关,但全部

\begin{minipage}{\textwidth}
\centering
\begin{minipage}{#2\textwidth}
\begin{longtable}{c}

可以替换为

\begin{minipage}{\textwidth}
\centering

由于内部minipage没有执行任何操作,并且longtable内部minipage无法工作,分页被禁用,但在这种情况下它是一个单行、单列表,只包含嵌套,tabular因此它除了允许\caption通过非常奇怪的路由外什么也不做。

您可以使用以下方式为表格添加标题

 \captionof{table}{#5}

来自(单行)caption-of包。

相关内容