Was ist eine gute Quellcode-Verwaltungstechnik, um Floats mit SyncTeX schnell zu positionieren?

Was ist eine gute Quellcode-Verwaltungstechnik, um Floats mit SyncTeX schnell zu positionieren?

Das Positionieren eines Floats in einem Dokument erfordert normalerweise nicht nur das Ändern von Modifikatoren wie [t]usw., sondern auch das Verschieben des Codes – insbesondere figure*von Umgebungen in twocolumnDokumenten, die vom Compiler vor der Seite gesehen werden müssen, auf der sie tatsächlich erscheinen sollen.

Das mehrmalige Verschieben insbesondere einer langen Float-Tabelle kann recht lästig sein; außerdem führt dies bei der Verwendung einer Versionskontrollsoftware zu erheblichen Fehlern, diffwo tatsächlich keine derartigen erheblichen Änderungen stattgefunden haben, und führt zum Abbruch der blameFunktion.

Eine Möglichkeit, die ich ausprobiert habe, ist

\newcommand{\figureImportantResult}{\begin{figure}...\end{figure}}

(zum Beispiel in der Präambel) und nur herumbewegen \figureImportantResult. Das funktioniert ganz gut und löst die oben genannten Probleme (nur einzeilige Änderungen, die die figureUmgebung nicht betreffen). SyncTeX versteht das jedoch nicht ganz: Jeder Float ist nur mit der entsprechenden Zeile verknüpft , nicht mit der Definition der Umgebung – daher wird das Anwenden von Änderungen an der Umgebung umständlicher. Dasselbe gilt für Konstruktionen, die das Paket \figure...verwenden (siehecatchfilebetweentagsdiese Antwort).

Wie kann ich das am besten umgehen? \include/ \inputwürde wahrscheinlich funktionieren, aber ich möchte das gesamte Dokument in einer Datei speichern (einige Herausgeber bevorzugen/verlangen das). Ich weiß, dass ich \include/ \inputvor der Übermittlung programmgesteuert durch den Inhalt der jeweiligen Dateien ersetzen kann, aber das ist nicht das, was ich am liebsten tun würde. Kann ich SyncTeX auf einen besseren Ort für diesen Code hinweisen? Gibt es eine Alternative dazu, \newcommanddie SyncTeX versteht?

Antwort1

Das ist vielleicht nicht schön, aber es funktioniert. Vielleicht inspiriert es jemanden, eine bessere Antwort zu posten:

% 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}

verwandte Informationen