ドキュメント内でフロートを配置するには、通常、[t]
etc などの修飾子を変更するだけでなく、コード内 (特にドキュメントfigure*
内の環境) を移動する必要があります。ドキュメント内の環境はtwocolumn
、実際に表示されるページの前にコンパイラーによって確認される必要があります。
特に長い float テーブルを複数回移動するのは非常に面倒です。さらに、バージョン管理ソフトウェアを使用する場合、diff
実際には大きな変更が発生していないのに重大なエラーが発生し、blame
機能が壊れてしまいます。
私が試した方法の一つは
\newcommand{\figureImportantResult}{\begin{figure}...\end{figure}}
(例えば、プリアンブルで) と だけを移動します\figureImportantResult
。これは非常にうまく機能し、上記の問題(環境に関係しない 1 行の変更のみfigure
)を解決します。ただし、SyncTeX はこれを完全には理解していません。各フロートは対応する行にのみ関連付けられており\figure...
、環境の定義には関連付けられていません。そのため、環境に変更を適用するのが面倒になります。パッケージを使用した構造でも同じことが言えますcatchfilebetweentags
(を参照)。この答え)。
これに対処する良い方法は何でしょうか? \include
/ は\input
おそらく機能するでしょうが、ドキュメント全体を 1 つのファイルに保存したいと思います (出版社によっては、これを希望/要求するところもあります)。提出前に、各ファイルのコンテンツでプログラム的に\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}