![使用 SyncTeX 快速定位浮動的良好原始碼管理技術是什麼?](https://rvso.com/image/348620/%E4%BD%BF%E7%94%A8%20SyncTeX%20%E5%BF%AB%E9%80%9F%E5%AE%9A%E4%BD%8D%E6%B5%AE%E5%8B%95%E7%9A%84%E8%89%AF%E5%A5%BD%E5%8E%9F%E5%A7%8B%E7%A2%BC%E7%AE%A1%E7%90%86%E6%8A%80%E8%A1%93%E6%98%AF%E4%BB%80%E9%BA%BC%EF%BC%9F.png)
在文件中定位浮動通常不僅涉及更改諸如[t]
等的修飾符,還涉及移動代碼 - 特別是文檔figure*
中的環境twocolumn
,編譯器必須在它們實際出現的頁面之前看到它們。
多次移動長浮動,特別是桌子可能會很煩人;此外,當使用版本控制軟體時,這會導致diff
實際上沒有發生如此重大變化的重大問題,並破壞功能blame
。
我嘗試過的一種方法是
\newcommand{\figureImportantResult}{\begin{figure}...\end{figure}}
(例如,在序言中)並且僅四處移動\figureImportantResult
。這非常有效,解決了上述問題(僅一行更改,不涉及環境figure
)。然而,SyncTeX 不太理解這一點:每個浮點僅與相應的\figure...
行相關聯,而不與環境的定義相關聯——因此對環境應用更改變得更加麻煩。使用包的構造也是如此catchfilebetweentags
(參見這個答案)。
處理這個問題有什麼好方法嗎?\include
/\input
可能會起作用,但我想將整個文件保存在一個文件中(一些出版商更喜歡/要求這樣做)。我知道我可以在提交之前以編程方式將\include
/替換\input
為相應文件的內容,但這不是我願意做的。我可以提示 SyncTeX 該程式碼的更好位置嗎?有沒有\newcommand
SyncTeX 能夠理解的替代方案?
答案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}