Tikz-Raster bei direkter Prozesskompilierung vs. zweimaliges Kompilieren vs. Kompilieren in der IDE

Tikz-Raster bei direkter Prozesskompilierung vs. zweimaliges Kompilieren vs. Kompilieren in der IDE

Ich habe mein Problem einigermaßen behoben, suche aber nach einer Erklärung, warum sich die Dinge so verhalten, wie sie sich verhalten. Die Frage bezieht sich auf Kompilierungsprozesse, daher glaube ich nicht, dass ein MWE wirklich erforderlich ist, habe aber für alle Fälle am Ende eines bereitgestellt. Dieser Beitrag ist ziemlich lang geworden, also entschuldigen Sie im Voraus die Geschichte, aber er scheint relevant dafür zu sein, wie ich in mein aktuelles Dilemma geraten bin.

Kontext: Ich versuche, mit Python einen „Prüfungsgenerator“ zu entwickeln, der eine Bibliothek mit Fragen, eine Auswahl der einzubeziehenden Fragentypen und der Prüfungsdauer verwendet und dann die Prüfung und Lösungen erstellt, indem er Fragen auswählt, die den Kriterien entsprechen, und sie in ein Xelatex-Dokument importiert. Anschließend wird das Dokument für den Benutzer kompiliert, sodass dieser das PDF sofort zur Hand hat.

Der Großteil des Dokuments wird ohne Probleme erstellt. Ich habe jedoch mit Tikz eine Reihe von Rastern für viele Fragen erstellt. Wenn ich jede Frage über Overleaf und TeXstudio ausführe, sehen die Raster genau so aus, wie ich sie haben möchte. Wenn ich jedoch das Python-Programm ausführe, scheinen sie stattdessen irgendwo in der Kopfzeile erstellt zu werden.

Der Prozess, den ich ausgeführt habe, um dies zu erreichen, ist:

xelatex Exam_Qs.tex

Um das Problem zu beheben, habe ich den von TeXstudio verwendeten Prozess kopiert und stattdessen Folgendes ausgeführt:

xelatex.exe -synctex=1 -interaction=nonstopmode "Exam_Qs".tex

Dies führt dazu, dass die Raster auf der richtigen Seite angezeigt werden, aber jetzt sind sie manchmal verschoben. Experimente lassen darauf schließen, dass eines immer richtig angezeigt wird, aber es ist nicht einheitlich, welches es ist. Normalerweise verwende ich nur IDEs, daher bin ich nicht damit zufrieden, den Prozess anders auszuführen. Meines Wissens weist der Nonstop-Modus die TeX-Engine an, Fehler so weit wie möglich zu umgehen, und die Option Synctex ermöglicht es der IDE, die Quelle und die PDF-Position zu korrelieren. Ich bin sicher, dass die Option Synctex für meinen endgültigen Zweck nicht viel bringt, aber als die Dinge nicht funktionierten, machte es Sinn, den TeXstudio-Prozess vollständig zu kopieren.

Was mich wirklich verwirrt, ist, dass das Ausführen des Prozesses direkt oder in TeXstudio, zumindest in meinen Augen, dasselbe Dokument erzeugen sollte. Das Kompilieren desselben .tex-Dokuments in TeXstudio erzeugt jedoch JEDES Mal das Raster, das ich erwarte, während es beim Aufrufen des Prozesses in Python JEDES Mal falsch aussieht und immer auf unterschiedliche Weise.

Nachdem ich das alles abgetippt und meine Probleme neu erstellt hatte, damit ich sie vollständig beschreiben konnte, ließ ich Python den Vorgang schließlich einfach zweimal ausführen und – siehe da – die Raster werden genau so angezeigt, wie ich es erwartet hatte. Also abschließend meine Fragen:

  1. Warum führt das zweimalige Ausführen des Vorgangs dazu, dass das Dokument richtig angezeigt wird bzw. warum führt das einmalige Ausführen des Vorgangs dazu, dass das Dokument nicht richtig angezeigt wird?

  2. Kann ich den aufgerufenen Prozess so ändern, dass ich ihn nicht zweimal aufrufen muss?

Einige MWEs der Gitter, die ich erstelle:

\documentclass[11pt,twoside,a4paper]{article}
\usepackage[margin=2cm, headheight=1.25cm, headsep=0.5cm]{geometry}
\usepackage{tikz} % for creating pictures using tikzpicture

\begin{document}

\begin{tikzpicture}[remember picture,overlay]
    \label{grid}
    % Define the size of the grid squares
    \def\minorsize{2mm} % Minor grid size
    \def\majorsize{1cm} % Major grid size
    
    % Calculate the adjusted positions for the grid
    \path (current page.south west) ++(20mm,23mm) coordinate (grid sw); % bottom left point
    \path (current page.north east) ++(-20mm,-23.8mm) coordinate (grid ne); % top right point
    
    % Draw the minor grid
    \draw[black!20, step=\minorsize] (grid sw) grid (grid ne);
    
    % Draw the major grid
    \draw[black!50, step=\majorsize] (grid sw) grid (grid ne);
\end{tikzpicture}\newpage

\vspace{10mm}\begin{tikzpicture}[remember picture, overlay]
    \label{grid}
    % Define the size of the grid squares
    \def\minorsize{2mm} % Minor grid size
    \def\majorsize{1cm} % Major grid size
    
    % Calculate the adjusted positions for the grid
    \path (current page.south west) ++(20mm,25.8mm) coordinate (grid sw); % bottom left point
    \path (current page.north east) ++(-20mm,-41mm) coordinate (grid ne); % top right point
    
    % Draw the minor grid
    \draw[black!20, step=\minorsize] (grid sw) grid (grid ne);
    
    % Draw the major grid
    \draw[black!50, step=\majorsize] (grid sw) grid (grid ne);
\end{tikzpicture}\newpage

\begin{tikzpicture}[remember picture, overlay]
    \label{grid}
    % Define the size of the grid squares
    \def\minorsize{2mm} % Minor grid size
    \def\majorsize{1cm} % Major grid size
    
    % Calculate the adjusted positions for the grid
    \path (current page.south west) ++(20mm,123mm) coordinate (grid sw); % bottom left point
    \path (current page.north east) ++(-20mm,-23.8mm) coordinate (grid ne); % top right point
    
    % Draw the minor grid
    \draw[black!20, step=\minorsize] (grid sw) grid (grid ne);
    
    % Draw the major grid
    \draw[black!50, step=\majorsize] (grid sw) grid (grid ne);
\end{tikzpicture}\vspace{153mm}

\end{document}

(Ich gehe nicht davon aus, dass die Raum- oder Geometrieeinstellungen mein Problem beeinflussen, habe sie aber für den Fall aufgenommen, dass es darauf hinausläuft.)

verwandte Informationen