隐藏输出,但保留交叉引用

隐藏输出,但保留交叉引用

我(失去理智)试图将 TeX 文件转换为 Wordlatex2rtf。正文翻译得很好,但表格翻译得不好。我使用了很多交叉引用,并且不想维护它们。

我的解决方案是将表格推到文档末尾。我想更进一步,抑制表格输出,但保留交叉引用。这将减少我的转换过程的一个步骤,因为我不必在附加回在 LaTeX 之外制作的好表格之前从 Word 文档中删除坏表格。

我尝试了包comment中的环境verbatim,但由于交叉引用不存在,因此不起作用。这可能吗?或者我应该接受我无法编写所有内容的事实?谢谢!

\documentclass[12pt]{article}
\usepackage{verbatim}

\begin{document}
I would like to reference Table \ref{tab:1}, which is pushed to the end of 
the paper with a {\tt clearpage} and commented out because it doesn't convert 
correctly in {\tt latex2rtf} and I will find a solution outside of \LaTeX.

\clearpage
\begin{comment}
\begin{table}
  \centering
  \begin{tabular}{ l c r }
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9 \\
  \end{tabular}
  \caption{This table is my white whale.}
  \label{tab:1}
\end{table}
\end{comment}

\end{document}

编辑:FWIW,我对表格的主要问题latex2rtf似乎是ifmmode宏,它会导致频繁崩溃。

答案1

以下代码允许您将表格保留在文档中(而不是将它们推到末尾),但仍可获得正确的引用。至少对于标签而言是这样。页面引用如预期的那样将毫无用处/丢失,因为实际引用table从未设置过。但是,您提到这将在 LaTeX 环境之外进行处理。

在此处输入图片描述

\documentclass{article}
\usepackage{environ}% http://ctan.org/pkg/environ
\makeatletter
\providecommand{\env@table@save@env}{}%
\providecommand{\env@table@process}{}%
\RenewEnviron{table}[1][]
{{\def\label##1{\gdef\recall@label{\label{##1}}}% Redefine \label to store label
 \renewcommand{\caption}[2][]{}% Remove caption capability
 \setbox1=\hbox{\BODY}}% Execute environment body and store it in a box
 \refstepcounter{table}\recall@label% Recall label
}
\makeatother

\begin{document}
I would like to reference Table~\ref{tab:1}, which is pushed to the end of 
the paper with a \verb|clearpage| and commented out because it doesn't convert 
correctly in \verb|latex2rtf| and I will find a solution outside of \LaTeX.

\begin{table}
  \centering
  \begin{tabular}{ l c r }
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9 \\
  \end{tabular}
  \caption{This table is my white whale.}
  \label{tab:1}
\end{table}

\end{document}

方法是重新定义浮动环境并调整\caption和的功能\label。前者将内容写入 ToC/LoT(我们不感兴趣),后者用于引用表。因此,我们使\caption和无效,\label而是存储它的参数以供以后使用。然后我们手动步进计数器table\recall@label这样就可以设置正确的值\label并可以引用。

类似的程序也适用于其他浮点数。如果hyperref被使用,可能需要做更多工作。对于正在使用的任何其他交叉引用包,情况可能也是如此。

答案2

我想我误解了一些东西:对表格的引用在 中很有效latex2rtf

我使用与您的略有不同的语法来使我的参考文献工作,但我不需要任何额外的包:

\documentclass{article}
\begin{document}

Table~\ref{tab:widgets} blah blah: 

\begin{table}[!h]
\centering
\caption{\label{tab:widgets}An example table.}
\begin{tabular}{l|r}
Item & Quantity \\\hline
Widgets & 42 \\
Gadgets & 13
\end{tabular}
\end{table}

\end{document}

将此文档命名为参考文献或类似:

$> latex Tref.tex
$> latex Tref.tex
$> latex2rtf Tref.tex

然后,您可以在 MS Word 中打开 .rtf 文件,并且此引用可以起作用,可能需要按下 ctrl-a 和 F9(全选,更新)后才能起作用。

我想我一定是错过了什么...这不是你需要的吗?

相关内容