![Сетка Tikz при прямой компиляции процесса против двойной компиляции против компиляции в IDE](https://rvso.com/image/472695/%D0%A1%D0%B5%D1%82%D0%BA%D0%B0%20Tikz%20%D0%BF%D1%80%D0%B8%20%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%B9%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D0%B8%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%B0%20%D0%BF%D1%80%D0%BE%D1%82%D0%B8%D0%B2%20%D0%B4%D0%B2%D0%BE%D0%B9%D0%BD%D0%BE%D0%B9%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D0%B8%20%D0%BF%D1%80%D0%BE%D1%82%D0%B8%D0%B2%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D0%B8%20%D0%B2%20IDE.png)
Я немного исправил свою проблему, но ищу понимание того, почему вещи ведут себя так, как они себя ведут. Вопрос касается компиляции процессов, поэтому я не думаю, что MWE действительно требуется, но предоставил его в конце на всякий случай. Этот пост получился довольно длинным, так что заранее извините за историю, но она кажется уместной для того, как я пришел к своей текущей дилемме.
Контекст: Я пытаюсь разработать «генератор экзаменов» через python, который берет библиотеку вопросов, выбор типа вопросов для включения и продолжительность экзамена, а затем создает экзамен и решения, выбирая вопросы, которые соответствуют критериям, и импортируя их в документ xelatex. Затем он компилирует документ для пользователя, чтобы у него был готовый к использованию pdf.
Большая часть документа создана без проблем, однако я создал ряд сеток для многих вопросов с помощью Tikz. При запуске каждого вопроса через overleaf и TeXstudio сетки выглядят именно так, как я хочу. Однако при запуске программы на Python они, похоже, создаются где-то в заголовке.
Процесс, который я использовал для достижения этого, следующий:
xelatex Exam_Qs.tex
Чтобы попытаться исправить это, я скопировал процесс, который использовал TeXstudio, и вместо этого запустил это:
xelatex.exe -synctex=1 -interaction=nonstopmode "Exam_Qs".tex
Это приводит к тому, что сетки отображаются на правильной странице, но теперь иногда они смещены. Эксперименты показывают, что одна из них всегда будет отображаться правильно, но непостоянно, какая именно. Обычно я использую только IDE, поэтому мне некомфортно запускать процесс по-другому. Я понимаю, что nonstopmode говорит движку TeX работать с ошибками как можно дольше, а опция synctex позволяет IDE сопоставлять исходный код и положение PDF. Я уверен, что опция synctex не делает многого для моей конечной цели, но когда что-то не работало, имело смысл полностью скопировать процесс TeXstudio.
Что меня действительно сбивает с толку, так это то, что запуск процесса напрямую, а не внутри TeXstudio должен, по крайней мере, в моем представлении, создавать тот же документ. Однако компиляция того же документа .tex в TeXstudio создает сетку так, как я ожидаю, что она будет выглядеть КАЖДЫЙ раз, тогда как вызов процесса в python, похоже, делает ее неправильной КАЖДЫЙ раз, и всегда по-разному.
После того, как я напечатал все это и воссоздал свои проблемы, чтобы я мог полностью их описать, я в итоге заставил python просто запустить процесс дважды и - о чудо - сетки отображаются именно так, как я и ожидал. Итак, наконец, мои вопросы:
Почему запуск процесса дважды приводит к правильному отображению документа/почему запуск процесса один раз приводит к неправильному отображению документа?
Могу ли я изменить вызываемый мной процесс, чтобы мне не приходилось вызывать его дважды?
Некоторые MWE-модели сеток, которые я создаю:
\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}
(Я не ожидаю, что настройки пространства или геометрии повлияют на проблему, с которой я столкнулся, но включил их на случай, если все вернется к этому)