我(失去理智)试图将 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(全选,更新)后才能起作用。
我想我一定是错过了什么...这不是你需要的吗?