有什么好的源代码管理技术可以使用 SyncTeX 快速定位浮点数?

有什么好的源代码管理技术可以使用 SyncTeX 快速定位浮点数?

在文档中定位浮动元素通常不仅涉及更改诸如[t]“etc”之类的修饰符,还涉及移动代码 - 尤其是文档figure*中的环境twocolumn,编译器必须在它们实际出现的页面之前看到它们。

多次移动长浮点数,特别是表格,可能会非常烦人;此外,当使用版本控制软件时,这会导致出现diff没有实际发生重大变化的重大变化,并破坏功能blame

我尝试过的一个方法是

\newcommand{\figureImportantResult}{\begin{figure}...\end{figure}}

(例如,在序言中)并且只移动\figureImportantResult。这非常有效,解决了上述问题(只有一行更改不涉及环境figure)。但是,SyncTeX 并不完全理解这一点:每个浮点数仅与相应的\figure...行相关联,而不与环境的定义相关联——因此将更改应用于环境变得更加麻烦。使用包的构造也是如此catchfilebetweentags(请参阅这个答案)。

有什么好办法可以解决这个问题?\include/\input可能有效,但我想将整个文档保存在一个文件中(一些出版商更喜欢/要求这样做)。我知道我可以在提交之前以编程方式用相应文件的内容替换\include/ ,但这不是我想要做的。我可以提示 SyncTeX 该代码的更好位置吗?有没有SyncTeX 能理解的\input替代方法?\newcommand

答案1

这可能不太好,但确实有效。也许这会启发某人发布更好的答案:

% FIGURE DEFINITION
\ifdefined\whichfigure\begin{myfigures}
    \definefigure{FigA}{%
        AAA
    }
    \definefigure{FigB}{%
        BBB
    }
    \definefigure{FigD}{%
        DDD
    }
    \definefigure{FigE}{%
        EEE
    }
\end{myfigures}\fi

\documentclass{article}

% PREAMBLE CODE
\newenvironment{myfigures}{%
    \let\shownfigure\relax%
}{%
    \if\shownfigure\relax%
        \PackageWarning{\string\showfigure}{Figure `\whichfigure' not defined}%
    \fi%
    \endinput%
}
\newcommand{\definefigure}[2]{%
    \def\thisfigure{#1}%
    \ifx\whichfigure\thisfigure%
        \let\shownfigure\thisfigure%
        #2%
    \fi%
}
\newcommand{\showfigure}[1]{%
    \def\whichfigure{#1}%
    \input{\jobname}%
}
% END OF PREAMBLE CODE

\begin{document}
    % FIGURE INCLUSION
    \showfigure{FigA}

    \showfigure{FigB}

    \showfigure{FigC}

    \showfigure{FigE}
\end{document}

相关内容