tex 파일을 어떻게 동적으로 가져올 수 있나요?
기본적으로 한 폴더에 수백 개의 .tex 파일이 있으며 이러한 모든 파일에는 여러 버전이 있습니다. 이 폴더 밖으로 이동할 수 없습니다.
전:
ver1file1.tex
ver2file1.tex
...
ver8file1.tex
...
ver8file100.tex
라텍스가 특정 버전의 모든 파일을 동적으로 로드할 수 있도록 환경 변수를 설정하거나 명령줄 인수를 전달할 수 있기를 원합니다.
예:
pdflatex ver1
or
EXPORT LATEX_VER=ver1
기본 라텍스 파일에서 다음 항목만 가져오도록 합니다.
ver1file1
ver1file2
...
ver1file100
아래는 제가 지금까지 시도한 것의 예입니다. 그러나 기본적으로 2개의 .tex 파일 file1.tex
과 file2.tex
. 가져올 파일의 이름을 정의하는 명령줄 인수를 허용하고 싶습니다.
main.tex
\import{c:\path}{aux}
\import{c:\path}{\dynavar} % should load variable from commandline + added string ex: ver1file1
aux.tex
%accept a command line argument
\ifdefined\myflag
\newcommand\dynavar[1]{\emph{#1}}
\else
\newcommand\dynavar[1]{defaultval}
\fi
\expandafter\def\expandafter\dynavar\expandafter{\dynavar { }file1}
답변1
제가 제안하고 싶은 작은 모형은 다음과 같습니다.
\documentclass{article}
\usepackage{filecontents,multido}
\begin{filecontents*}{dynavar.tex}
\makeatletter
\@ifundefined{dynavar}{%
\newcommand{\dynavar}{defaultval}%
\typeout{No command-line value specified for \string\dynavar. Using 'defaultval'.}%
}{}
\makeatother
\end{filecontents*}
% ========== You would not need this
\begin{filecontents*}{ver1file1.tex}
ver1file1
\end{filecontents*}
\begin{filecontents*}{ver1file2.tex}
ver1file2
\end{filecontents*}
% ========== You would not need this
\begin{document}
\input{dynavar}
\multido{\i=1+1}{2}{% Update '2' to (say) '100' if you have 100 files
File \texttt{\dynavar file\i}: \endgraf \input{\dynavar file\i}\endgraf}
\end{document}
다음을 사용하여 위 파일을 호출합니다.
pdflatex \def\dynavar{ver1} \input{main}
ver1
파일을 실행합니다 . 또는
pdflatex main.tex
defaultval
파일을 실행하고 싶다면 . "명령줄" 옵션을 사용하면 \def\dynavar{ver1}
출력을 얻을 수 있습니다.
답변2
git을 사용한 작업흐름을 생각해 보세요. 보다여기자세한 내용은. 각 버전에 태그를 지정할 수 있습니다. 즉, 커밋 유형 이후에는
git tag -a "v1" -m "This version has all the bare bones necessary for the project"
그런 다음 더 많은 커밋과 더 많은 태그를 수행하면 됩니다.
git checkout -b v4_branch tags/v4
그러면 작업 디렉터리는 이전에 "v4" 태그를 지정했을 당시의 상태로 변경되고 v4_branch라는 새 분기에 있게 됩니다. 읽다여기태그를 올바르게 확인하는 방법에 대한 자세한 내용(이를 수행하는 가장 좋은 방법에 대한 몇 가지 다른 아이디어가 있음)
답변3
(이 솔루션은 포스터에 지정된 대로 명령줄 입력을 활용하지 않는다는 것을 방금 깨달았습니다.)
\input
또 다른 해결책은 명령을 사용하여 특정 버전에 대한 파일만 입력하는 tex 파일을 만드는 것입니다 . 예를 들어 ver1files.tex
다음 줄로 구성된 이라는 파일을 만들 수 있습니다.
\input{./ver1file1.tex}
\input{./ver1file2.tex}
\input{./ver1file3.tex}
...
\input{./ver1file100.tex}
그런 다음 기본 LaTeX 문서에서 다음과 같이 파일을 ver1
입력하는 것만으로 모든 파일을 쉽게 입력할 수 있습니다.ver1files.tex
\input{./ver1files.tex}
모든 파일에 대한 명령을 ver2files.tex
포함하는 를 생성할 수 있으며 , 모든 버전에 대한 기타 등등도 가능합니다.\input
ver2
\input
LaTeX를 사용하면 이와 같은 명령을 "중첩"할 수 있습니다 . 즉, \input
추가 명령이 포함된 파일을 입력하는 기본 LaTeX 파일에 있습니다 \input
. 와 관련이 있습니다 \input
. 그러나 \include
명령에서는 이러한 유형의 중첩을 활용할 수 없습니다.
ver1file1.tex
기본 LaTeX 파일이 및 기타 파일 과 동일한 폴더에 없으면 해당 파일이 실제로 있는 위치를 가리키도록 명령 ver1files.tex
의 경로를 업데이트해야 합니다 . \input
여기서는 간단한 예를 위해 "./"(현재 디렉터리)를 사용했습니다.