STATA 表格标题内的未解析参考标签

STATA 表格标题内的未解析参考标签

我正在使用 stata 生成表格。此 STATA 生成的 tex 表格在 \caption{} 命令中定义了标签。此标签应该有效。但它给了我未解析的引用(表格??)。当我手动取出 caption 命令内的标签并将其发布在 \caption{} 之后时,标签有效。

我正在努力寻找这里的问题。有没有其他方法可以在 STATA 中发出命令,让 \label{} 保留在 \caption{} 之后。或者我可以继续使用相同的格式并进行一些修改吗?

{
  \begingroup
  \let\oldcaption\caption
  \renewcommand{\caption}[1]{\oldcaption{Regression table}}
  \renewcommand\normalsize{\small}%
  \normalsize
  \begin{center}
   \input{../RESULTS/table.tex}        
  \end{center}
 \endgroup
}

答案1

如果我正确理解了这个问题,你有一些自动生成的 LaTeX 代码\caption{...\label{...}...},你想在保留标签的同时更改标题文本。这个 MWE 会显示问题:

\documentclass{article}
\begin{document}

\let\oldcaption\caption
\renewcommand{\caption}[1]{\oldcaption{Regression table}}

% This table represents the auto-generated code
\begin{table}
    \centering
    \caption{A table\label{A}}
\end{table}

\ref{A} % does not work since the caption text and label was replaced
\end{document}

一种可能的解决方案是使用包\caption@getlabel提供的辅助宏caption,该宏尝试\label从其参数中提取:

\documentclass{article}
\usepackage{caption3}
\begin{document}

\makeatletter
\let\oldcaption\caption
\renewcommand{\caption}[1]{%
  \oldcaption{Regression table}%
  \caption@getlabel#1\label{}\@nil
  \caption@thelabel
}
\makeatother

\begin{table}
    \centering
    \caption{A table\label{A}}
\end{table}

\ref{A}
\end{document}

请注意,仅caption3加载了 (而不是caption),因为此包仅提供辅助宏,并且不重新定义现有的宏,因此它应该与所有文档类兼容。(如果您caption无论如何都要加载包,则可以删除\usepackage{caption3}。)

警告:\caption@getlabel是一个内部宏,未记录在软件包的用户文档中caption。但我(作为caption软件包的作者和维护者)不打算在将来更改其界面。

相关内容