직접 프로세스 컴파일의 Tikz 그리드 vs 두 번 컴파일 vs IDE에서 컴파일

직접 프로세스 컴파일의 Tikz 그리드 vs 두 번 컴파일 vs IDE에서 컴파일

문제를 어느 정도 해결했지만 상황이 왜 그렇게 작동하는지에 대한 통찰력을 조사하고 있습니다. 질문은 컴파일 프로세스와 관련되어 있으므로 MWE가 실제로 필요하다고 생각하지 않지만 만일을 대비하여 마지막에 MWE를 제공했습니다. 이 게시물은 꽤 길어져서 이야기를 미리하게 되어 죄송하지만 제가 현재의 딜레마에 어떻게 도달했는지와 관련이 있는 것 같습니다.

맥락: 저는 질문 라이브러리, 포함할 질문 유형 선택, 시험 기간 선택을 사용하는 Python을 통해 "시험 생성기"를 설계하려고 합니다. 그런 다음 다음과 같은 질문을 선택하여 시험과 솔루션을 만듭니다. 기준을 일치시키고 이를 xelatex 문서로 가져옵니다. 그런 다음 사용자를 위해 문서를 컴파일하여 PDF를 사용할 수 있도록 합니다.

문서의 대부분은 문제 없이 생성되었습니다. 그러나 저는 Tikz를 사용하여 많은 질문에 대한 일련의 그리드를 만들었습니다. overleaf와 TeXstudio를 통해 모든 질문을 실행할 때 그리드는 내가 원하는 모습과 정확히 일치합니다. 그런데 파이썬 프로그램을 실행하면 헤더 어딘가에 대신 생성되는 것 같습니다.

이를 달성하기 위해 내가 실행한 프로세스는 다음과 같습니다.

xelatex Exam_Qs.tex

이 문제를 해결하기 위해 TeXstudio가 사용하고 있던 프로세스를 복사하여 대신 다음을 실행하기 시작했습니다.

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

이로 인해 그리드가 올바른 페이지에 표시되지만 때로는 이동되는 경우가 있습니다. 실험에 따르면 하나는 항상 올바르게 표시되지만 어떤 것인지는 일관성이 없습니다. 저는 일반적으로 IDE만 사용하므로 프로세스를 다르게 실행하는 것이 불편합니다. 내가 이해한 바에 따르면 논스톱 모드는 TeX 엔진에게 가능한 한 많은 오류를 실행하도록 지시하고 synctex 옵션을 사용하면 IDE가 소스와 PDF 위치를 상호 연관시킬 수 있다는 것입니다. 나는 synctex 옵션이 나의 최종 의도된 목적에 큰 도움이 되지 않는다고 확신하지만, 일이 제대로 작동하지 않을 때는 TeXstudio 프로세스를 완전히 복사하는 것이 합리적이었습니다.

나를 정말로 혼란스럽게 하는 것은 TeXstudio 내부에서 직접 프로세스를 실행하는 것이 적어도 내 생각에는 동일한 문서를 생성해야 한다는 것입니다. 그러나 TeXstudio에서 동일한 .tex 문서를 컴파일하면 매번 예상되는 대로 그리드가 생성되는 반면, Python에서 프로세스를 호출하면 매번 잘못된 것처럼 보이고 항상 다른 방식으로 보입니다.

이 모든 것을 입력하고 문제를 다시 생성하여 완전히 설명할 수 있게 한 후 Python으로 프로세스를 두 번 실행하게 했고, 보라, 그리드가 내가 예상한 대로 정확히 표시되고 있었습니다. 그래서 마지막으로 내 질문은 다음과 같습니다.

  1. 프로세스를 두 번 실행하면 문서가 제대로 표시되는 이유는 무엇입니까/프로세스를 한 번 실행하면 문서가 제대로 표시되지 않는 이유는 무엇입니까?

  2. 두 번 호출할 필요가 없도록 호출 중인 프로세스를 수정할 수 있습니까?

내가 만들고 있는 그리드의 일부 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}

(공간이나 지오메트리 설정이 내가 겪고 있는 문제에 영향을 미칠 것으로 기대하지는 않지만 이것이 다시 발생하는 경우를 대비하여 포함했습니다)

관련 정보