외부 파일에서 넣으시겠습니까?

외부 파일에서 넣으시겠습니까?

텍스트 파일에서 한 줄을 읽고 이 줄의 내용으로 확장하는 명령을 작성해야 하며, 다음 명령은 다음 줄을 읽는 등의 작업을 수행해야 합니다.

...
\command{arg}
...
\command{arg}
...
\command{arg}
...

매크로 인수는 외부 파일의 색인으로 사용할 수 없으며 외부 파일은 Python 스크립트에 의해 생성됩니다.

Ethan:: 텍스트 파일에는 Python 스크립트에 의해 한 줄씩 생성된 아랍어 텍스트가 포함되어 있습니다... LateX(XeLateX)의 첫 번째 패스에서 각 \command는 해당 인수를 fileIn.txt(아랍어 텍스트)에 씁니다... python 스크립트는 이 파일을 가져와서 fileOut.txt를 생성합니다... Latex의 두 번째 패스에서 각 명령은 fileOut.txt에서 해당 줄을 읽습니다... 두 개의 텍스트 파일에는 간단한 한 줄씩 아랍어 텍스트가 포함되어 있습니다...

line one
line two
.
.
.
last line

여기 MnWE가 있습니다:

usepackage{}
...
...
\newcommand{\command}[1]{....#1...}
...
\begin{document}
...
...
\command{arg0}
...
...
\command{arg1}
...
...
...
\command{arg2}
...
...
\command{arg3}
...

\end{document}

첫 번째 패스에서 \command{..}는 일반적으로 외부 파일에 내용을 쓰는 \index{..}와 비슷하지만 두 번째 패스에서는 ()TeX의 명령에 대해 전혀 모릅니다. 외부 파일에서... 이제 모든 것이 명확해지기를 바랍니다.

답변1

이는 귀하의 요구를 충족시킬 수 있습니다. 나는 그것을 찾았다파일 입력 및 출력; 나는 그것을 (다소 단순화하여) 여기서 재현하고 있습니다:

이 샘플 fileOut.txt를 사용하면 다음과 같습니다.

first line, with a \TeX{} macro to expand
second line
third line

코드

\documentclass{article}

\newread\file
\openin\file=fileOut.txt

\newcommand{\getnextline}{%
 \read\file to\fileline % Reads a line of the file into \fileline
 \fileline % display it
}

\begin{document}

First line of fileOut.txt: 

\getnextline{}

More text here, then second line: \getnextline{}

Third line: \getnextline{}

Read past end of file? \getnextline{}
\closein\file

\end{document}

생산하다

여기에 이미지 설명을 입력하세요

이것이 XeTeX에서 아랍어 텍스트로 작동하기를 바랍니다.

편집하다OP의 추가 질문에 대답하려면 다음을 수행하십시오.

여기 예제가 작동하므로 open 및 close 문이 해당 위치에 있습니다. 어떤 언어로든 좋은 프로그래밍 방법을 사용하려면 파일이 존재하고 읽을 수 있는지 확인해야 합니다. 이 답변은 개념 증명일 뿐이므로 그렇게하지 않았습니다. 환경을 완전히 제어할 수 있고 파일이 항상 예상한 위치에 있을 것이라는 것을 알고 있다면 귀찮게 할 필요가 없습니다.

열린 파일을 닫지 않으면 어떻게 되는지 모르겠습니다. 나는 TeX이 동시에 열 수 있는 파일 수를 제한한다는 것을 알고 있습니다. 일부 응용 프로그램은 파일 핸들을 스스로 해제하는 것이 좋지 않으므로 직접 닫는 것이 좋습니다.

파일의 끝을 지나 읽으면 어떤 일이 일어날지 궁금했습니다. 이 예에서는 존재하지 않는 줄을 읽으면 빈 문자열만 반환된다는 것을 보여줍니다. 귀하의 사용 사례에서 이것이 허용되는지 여부를 결정해야 합니다. 그렇지 않은 경우 eof를 테스트하고 그에 따라 조치하십시오.

관련 정보