Pythontex를 사용하여 LaTeX가 매번 동일한 코드를 다시 실행하도록 강제

Pythontex를 사용하여 LaTeX가 매번 동일한 코드를 다시 실행하도록 강제

pycode를 사용하여 다른 파일에서 함수를 가져오는 방법을 모르겠습니다.

다음 코드가 포함된 csv_code.py라는 파일이 있습니다.

import csv
def create_csv():

header = ['name', 'degree']
data = ['Mark', 6]

with open('degrees.csv', 'w', encoding='UTF8', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(header)
    writer.writerow(data)

같은 디렉토리에 이 코드가 포함된 .tex 파일이 있습니다.

\documentclass{article}
\usepackage{csvsimple}
\usepackage{pythontex}

\begin{document}

\begin{pycode}
from csv_code import *
create_csv()
\end{pycode}

\csvautotabular{countries.csv}

\end{document}

잘 작동하지만 일단 컴파일되면 csv_code의 코드가 변경되면(이제 Mark 대신 John이라는 이름을 사용한다고 가정해 보겠습니다) 다시 컴파일할 때 문서는 아무런 변경 사항도 겪지 않습니다.

나는 LaTeX가 게으르다고 가정하고 이미 해당 코드를 실행했기 때문에 다시 실행하지 않습니다. LaTeX가 매번 해당 코드를 실행하도록 하는 방법이 있습니까?

내가 읽고여기을 사용하는 솔루션입니다 --shell-escape. 하지만 VSCode에서 이를 설정하는 방법을 모르고 코드를 공유하면 더 쉽게 설정할 수 있도록 설정을 조작하지 않는 방법을 찾고 싶습니다.

답변1

나에게는 pytex.add_dependencies('csv_code.py')작업을 추가하는 것입니다. LaTeX의 문제가 아니라 PythonTeX의 문제인 것 같습니다. PythonTeX는 csv_code.py. PythonTeX는 일반적으로 가져오기의 변경 사항을 찾지 않는 것 같습니다. 따라서 파일이 종속성임을 알려주어야 합니다.

이를 시연하는 워크플로는 다음과 같습니다.

  1. 아직 남아 있을 수 있는 모든 보조 파일을 정리합니다.
  2. 처음으로 문서 컴파일
pdflatex main
python3 $(which pythontex) main
pdflatex main
  1. PDF에는 다음이 포함됩니다.표시
  2. 변화표시에게남자~에csv_code.py
  3. 두 번째로 문서 컴파일
python3 $(which pythontex) main
pdflatex main
  1. PDF에는 다음이 포함됩니다.남자

파일은 다음과 같습니다. (컴파일 가능하도록 조금 변경했습니다. 문제의 근본적인 내용을 변경하지 않았기를 바랍니다):

main.tex:

\documentclass{article}
\usepackage{csvsimple}
\usepackage{pythontex}

\pyc{pytex.add_dependencies('csv_code.py')}

\begin{document}

\begin{pycode}
from csv_code import *
create_csv()
\end{pycode}

\IfFileExists{degrees.csv}{\csvautotabular{degrees.csv}}{}

\end{document}

csv_code.py:

import csv

def create_csv():
    header = ['name', 'degree']
    data = ['Mark', 6]

    with open('degrees.csv', 'w') as f:
        writer = csv.writer(f)
        writer.writerow(header)
        writer.writerow(data)

관련 정보