¿Cuál es una buena técnica de gestión de código fuente para posicionar rápidamente flotadores con SyncTeX?

¿Cuál es una buena técnica de gestión de código fuente para posicionar rápidamente flotadores con SyncTeX?

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 twocolumnlos 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 differrores significativos en los que en realidad no se han producido cambios tan significativos y se interrumpe la blamefunció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 figuremedio 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 catchfilebetweentagspaquete (veresta respuesta).

¿Cuál es una buena manera de lidiar con esto? \includeProbablemente \inputfuncionarí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/ \inputpor 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 \newcommandlo 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}

información relacionada