
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는 일반적으로 가져오기의 변경 사항을 찾지 않는 것 같습니다. 따라서 파일이 종속성임을 알려주어야 합니다.
이를 시연하는 워크플로는 다음과 같습니다.
- 아직 남아 있을 수 있는 모든 보조 파일을 정리합니다.
- 처음으로 문서 컴파일
pdflatex main
python3 $(which pythontex) main
pdflatex main
- PDF에는 다음이 포함됩니다.표시
- 변화표시에게남자~에
csv_code.py
- 두 번째로 문서 컴파일
python3 $(which pythontex) main
pdflatex main
- 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)