Posicionar um float em um documento geralmente envolve não apenas alterar modificadores como [t]
etc, mas também movimentar o código - especialmente figure*
ambientes em twocolumn
documentos, que devem ser vistos pelo compilador antes da página em que deveriam aparecer.
Mover um flutuador longo, em particular uma mesa, várias vezes pode ser bastante irritante; além disso, ao usar software de controle de versão, isso resulta em diff
problemas significativos onde nenhuma mudança significativa ocorreu de fato e interrompe a blame
função.
Uma maneira que tentei é
\newcommand{\figureImportantResult}{\begin{figure}...\end{figure}}
(por exemplo, no preâmbulo) e movendo-se apenas \figureImportantResult
. Isso funciona muito bem, resolvendo os problemas acima (apenas alterações de uma linha que não envolvem o figure
ambiente). No entanto, o SyncTeX não entende isso muito bem: cada float está associado apenas à \figure...
linha correspondente, não à definição do ambiente - portanto, aplicar alterações ao ambiente torna-se mais complicado. O mesmo acontece com construções usando o catchfilebetweentags
pacote (vejaesta resposta).
Qual é uma boa maneira de lidar com isso? \include
/ \input
provavelmente funcionaria, mas eu gostaria de manter o documento inteiro em um arquivo (alguns editores preferem/exigem isso). Eu sei que posso substituir programaticamente \include
/ \input
pelo conteúdo dos respectivos arquivos antes do envio, mas não é isso que eu preferiria fazer. Posso sugerir ao SyncTeX uma localização melhor desse código? Existe uma alternativa que \newcommand
o SyncTeX entende?
Responder1
Isso pode não ser legal, mas funciona. Talvez inspire alguém a postar uma resposta melhor:
% 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}