Colocar un flotante en un documento generalmente implica no solo cambiar modificadores como [t]
etc, sino también mover el código, especialmente figure*
los entornos en twocolumn
los documentos, que el compilador debe ver antes de la página en la que realmente deberían aparecer.
Mover un flotador largo, en particular una mesa, varias veces puede resultar bastante molesto; Además, cuando se utiliza software de control de versiones, esto da lugar a diff
errores significativos en los que en realidad no se han producido cambios tan significativos y se interrumpe la blame
función.
Una forma que he probado es
\newcommand{\figureImportantResult}{\begin{figure}...\end{figure}}
(por ejemplo, en el preámbulo) y moverse únicamente \figureImportantResult
. Esto funciona bastante bien y resuelve los problemas anteriores (solo cambios de una línea que no involucran al figure
medio ambiente). Sin embargo, SyncTeX no entiende esto del todo: cada flotante sólo está asociado con la \figure...
línea correspondiente, no con la definición del entorno, por lo que aplicar cambios al entorno se vuelve más engorroso. Lo mismo ocurre con las construcciones que utilizan el catchfilebetweentags
paquete (veresta respuesta).
¿Cuál es una buena manera de lidiar con esto? \include
Probablemente \input
funcionaría, pero me gustaría mantener todo el documento en un solo archivo (algunos editores lo prefieren o lo exigen). Sé que puedo reemplazar programáticamente \include
/ \input
por el contenido de los archivos respectivos antes de enviarlos, pero esto no es lo que preferiría hacer. ¿Puedo indicarle a SyncTeX una mejor ubicación para ese código? ¿Existe una alternativa a \newcommand
lo que SyncTeX entiende?
Respuesta1
Puede que esto no sea agradable, pero funciona. Quizás inspire a alguien a publicar una mejor respuesta:
% 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}