使用 SyncTeX 快速定位浮動的良好原始碼管理技術是什麼?

使用 SyncTeX 快速定位浮動的良好原始碼管理技術是什麼?

在文件中定位浮動通常不僅涉及更改諸如[t]等的修飾符,還涉及移動代碼 - 特別是文檔figure*中的環境twocolumn,編譯器必須在它們實際出現的頁面之前看到它們。

多次移動長浮動,特別是桌子可能會很煩人;此外,當使用版本控制軟體時,這會導致diff實際上沒有發生如此重大變化的重大問題,並破壞功能blame

我嘗試過的一種方法是

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

(例如,在序言中)並且僅四處移動\figureImportantResult。這非常有效,解決了上述問題(僅一行更改,不涉及環境figure)。然而,SyncTeX 不太理解這一點:每個浮點僅與相應的\figure...行相關聯,而不與環境的定義相關聯——因此對環境應用更改變得更加麻煩。使用包的構造也是如此catchfilebetweentags(參見這個答案)。

處理這個問題有什麼好方法嗎?\include/\input可能會起作用,但我想將整個文件保存在一個文件中(一些出版商更喜歡/要求這樣做)。我知道我可以在提交之前以編程方式將\include/替換\input為相應文件的內容,但這不是我願意做的。我可以提示 SyncTeX 該程式碼的更好位置嗎?有沒有\newcommandSyncTeX 能夠理解的替代方案?

答案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}

相關內容