tex 파일을 동적으로 가져옵니다.

tex 파일을 동적으로 가져옵니다.

tex 파일을 어떻게 동적으로 가져올 수 있나요?

기본적으로 한 폴더에 수백 개의 .tex 파일이 있으며 이러한 모든 파일에는 여러 버전이 있습니다. 이 폴더 밖으로 이동할 수 없습니다.

전:

ver1file1.tex
ver2file1.tex
...
ver8file1.tex
...
ver8file100.tex

라텍스가 특정 버전의 모든 파일을 동적으로 로드할 수 있도록 환경 변수를 설정하거나 명령줄 인수를 전달할 수 있기를 원합니다.

예:

pdflatex ver1
or
EXPORT LATEX_VER=ver1

기본 라텍스 파일에서 다음 항목만 가져오도록 합니다.

ver1file1
ver1file2
...
ver1file100

아래는 제가 지금까지 시도한 것의 예입니다. 그러나 기본적으로 2개의 .tex 파일 file1.texfile2.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포함하는 를 생성할 수 있으며 , 모든 버전에 대한 기타 등등도 가능합니다.\inputver2

\inputLaTeX를 사용하면 이와 같은 명령을 "중첩"할 수 있습니다 . 즉, \input추가 명령이 포함된 파일을 입력하는 기본 LaTeX 파일에 있습니다 \input. 와 관련이 있습니다 \input. 그러나 \include명령에서는 이러한 유형의 중첩을 활용할 수 없습니다.

ver1file1.tex기본 LaTeX 파일이 및 기타 파일 과 동일한 폴더에 없으면 해당 파일이 실제로 있는 위치를 가리키도록 명령 ver1files.tex의 경로를 업데이트해야 합니다 . \input여기서는 간단한 예를 위해 "./"(현재 디렉터리)를 사용했습니다.

관련 정보