![外部ファイルから配置しますか?](https://rvso.com/image/281473/%E5%A4%96%E9%83%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89%E9%85%8D%E7%BD%AE%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
テキスト ファイルから 1 行を読み取ってその行の内容を展開し、次のコマンドで次の行を読み取る、といったコマンドを記述する必要があります。
...
\command{arg}
...
\command{arg}
...
\command{arg}
...
マクロ引数は外部ファイル内のインデックスとして使用できず、外部ファイルは Python スクリプトによって生成されます。
Ethan:: テキスト ファイルには、Python スクリプトによって 1 行ずつ生成されたアラビア語のテキストが含まれています... LateX (XeLateX) の最初のパスで、各 \command は引数を fileIn.txt (アラビア語のテキスト) に書き込みます... Python スクリプトはこのファイルを取得して fileOut.txt を生成します... Latex の 2 番目のパスで、各 \command は fileOut.txt から対応する行を読み取ります... 2 つのテキスト ファイルには、単純な 1 行ずつのアラビア語のテキストが含まれています...
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{..} に似ていますが、2 番目のパスでは、外部ファイルからコンテンツを配置する ()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 をテストし、それに応じて対処してください。