![load-unicode-xetex-classes.tex が xetex.ini によってのみロードされるのはなぜですか (xelatex.ini によってロードされるのではありません)?](https://rvso.com/image/405365/load-unicode-xetex-classes.tex%20%E3%81%8C%20xetex.ini%20%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%81%AE%E3%81%BF%E3%83%AD%E3%83%BC%E3%83%89%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%20(xelatex.ini%20%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%83%AD%E3%83%BC%E3%83%89%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93)%3F.png)
ファイルxetex.ini
を生成するときに使用されますxetex.fmt
。
%% xetex.ini
% General Unicode set up
\input load-unicode-data.tex %
% Classes that have always been defined by the XeTeX format
\input load-unicode-xetex-classes.tex %
この.iniファイルは、load-unicode-data.tex
との両方をロードしますload-unicode-xetex-classes.tex
。しかし、を生成する際にxelatex.fmt
使用されるファイルxelatex.ini
最初のファイルload-unicode-data.tex
のみをロードするようです ( を通じてlatex.ltx
)。
latex2e のリポジトリを検索しましたが、2 番目のファイルが含まれているものが見つかりませんload-unicode-xetex-classes.tex
。なぜこのファイルは xetex.ini によってのみ入力されるのでしょうか?
答え1
TeX LiveとMiKTeXで使用されるファイル.ini
は、DVIを扱うための単純な方法として始まりました。対PDF出力:latex.ini
およびpdflatex.ini
。しかし、それらは時間の経過とともに、特にプレーンTeXのような形式のものが増えました。その理由は、プレーンの場合、Knuthは(慣例により)他の人が変更できないファイル内の元のTeX(TeX90)のみをサポートしているためです。したがって、XeTeX、LuaTeX、およびLuaTeXの主要な機能をサポートするには、等ファイルにコードを追加する.ini
必要がありました。
しばらくの間、 にも変更が加えられずlatex.ltx
、 にさまざまなものが蓄積されxelatex.ini
、等しばらく前に、チームは XeTeX と LuaTeX を積極的にサポートすることを決定し、多くのコードが ファイルから に戻されまし.ini
たlatex.ltx
。
ltfinal.dtx
(の最後の部分の出典)を見てlatex.ltx
みると、load-unicode-xetex-classes
は読む:現在のソース部分は
% \changes{v2.0a}{2015/01/03}{Unicode data loading added}
% \changes{v2.0c}{2015/01/24}{Skip T1-code entirely with Unicode engines}
% \changes{v2.0d}{2015/03/26}{Use renamed
% \texttt{unicode-letters.def}}
% \changes{v2.0i}{2015/12/10}{Use new common Unicode data loaders}
% \changes{v2.0j}{2016/01/04}{Do not set up inter character classes for
% XeTeX}
% \changes{v2.0l}{2016/01/05}{Correct \textsf{latexrelease} guards}
% \changes{v2.0l}{2016/01/05}{Ensure old definitions for inter-character
% class toks are available using \textsf{latexrelease}}
% \changes{v2.0m}{2016/01/05}{Undefine XeTeX classes when using patching
% an older kernel}
% \changes{v2.0l}{2016/01/05}{Missing brace}
% \changes{v2.0p}{2016/01/05}{Only apply XeTeX change if XeTeX is in use}
% For $7$- and $8$-bit engines the assumption of T1 encodings is the
% basis for the hyphenation patterns. That's not the case for the Unicode
% engines, where the assumption is engine-native working. The common
% loader system provides access to data from the Unicode Consortium
% covering not only |\lccode| but also other related data. The
% |\lccode| part of that at least needs to be loaded before hyphenation is
% tackled: Xe\TeX{} follows the standard \TeX{} route of building patterns
% into the format. Lua\TeX{} doesn't require this data be loaded \emph{here}
% but it does need to be loaded somewhere. Rather than test for the Unicode
% engines by name, the approach here is to look for the extended math mode
% handling both provide: any other engine developed in this area will
% presumably also provide |\Umathcode|.
% \begin{macrocode}
\ifnum 0%
\ifx\Umathcode\@undefined\else 1\fi
\ifx\XeTeXmathcode\@undefined\else 1\fi
>\z@
\message{ Unicode character data,}
\input{load-unicode-data}
%</2ekernel>
%<latexrelease>\IncludeInRelease{2016/02/01}%
%<latexrelease> {\XeTeXintercharclasses}{XeTeX character classes}%
%<latexrelease> \ifx\XeTeXinterchartoks\undefined
%<latexrelease> \else
%<latexrelease> \begingroup
%<latexrelease> \chardef\XeTeXcharclassID = 0 %
%<latexrelease> \chardef\XeTeXcharclassOP = 0 %
%<latexrelease> \chardef\XeTeXcharclassCL = 0 %
%<latexrelease> \chardef\XeTeXcharclassEX = 0 %
%<latexrelease> \chardef\XeTeXcharclassIS = 0 %
%<latexrelease> \chardef\XeTeXcharclassNS = 0 %
%<latexrelease> \chardef\XeTeXcharclassCM = 0 %
%<latexrelease> \input{load-unicode-xetex-classes}
%<latexrelease> \endgroup
%<latexrelease> \global\let\xtxHanGlue\undefined
%<latexrelease> \global\let\xtxHanSpace\undefined
%<latexrelease> \global\XeTeXinterchartoks 0 1 = {}
%<latexrelease> \global\XeTeXinterchartoks 0 2 = {}
%<latexrelease> \global\XeTeXinterchartoks 0 3 = {}
%<latexrelease> \global\XeTeXinterchartoks 1 0 = {}
%<latexrelease> \global\XeTeXinterchartoks 2 0 = {}
%<latexrelease> \global\XeTeXinterchartoks 3 0 = {}
%<latexrelease> \global\XeTeXinterchartoks 1 1 = {}
%<latexrelease> \global\XeTeXinterchartoks 1 2 = {}
%<latexrelease> \global\XeTeXinterchartoks 1 3 = {}
%<latexrelease> \global\XeTeXinterchartoks 2 1 = {}
%<latexrelease> \global\XeTeXinterchartoks 2 2 = {}
%<latexrelease> \global\XeTeXinterchartoks 2 3 = {}
%<latexrelease> \global\XeTeXinterchartoks 3 1 = {}
%<latexrelease> \global\XeTeXinterchartoks 3 2 = {}
%<latexrelease> \global\XeTeXinterchartoks 3 3 = {}
%<latexrelease> \fi
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}%
%<latexrelease> {\XeTeXintercharclasses}{XeTeX character classes}%
%<latexrelease> \ifx\XeTeXinterchartoks\undefined
%<latexrelease> \else
%<latexrelease> \input{load-unicode-xetex-classes}
%<latexrelease> \gdef\xtxHanGlue{\hskip0pt plus 0.1em\relax}
%<latexrelease> \gdef\xtxHanSpace{\hskip0.2em plus 0.2em minus 0.1em\relax}
%<latexrelease> \global\XeTeXinterchartoks 0 1 = {\xtxHanSpace}
%<latexrelease> \global\XeTeXinterchartoks 0 2 = {\xtxHanSpace}
%<latexrelease> \global\XeTeXinterchartoks 0 3 = {\nobreak\xtxHanSpace}
%<latexrelease> \global\XeTeXinterchartoks 1 0 = {\xtxHanSpace}
%<latexrelease> \global\XeTeXinterchartoks 2 0 = {\nobreak\xtxHanSpace}
%<latexrelease> \global\XeTeXinterchartoks 3 0 = {\xtxHanSpace}
%<latexrelease> \global\XeTeXinterchartoks 1 1 = {\xtxHanGlue}
%<latexrelease> \global\XeTeXinterchartoks 1 2 = {\xtxHanGlue}
%<latexrelease> \global\XeTeXinterchartoks 1 3 = {\nobreak\xtxHanGlue}
%<latexrelease> \global\XeTeXinterchartoks 2 1 = {\nobreak\xtxHanGlue}
%<latexrelease> \global\XeTeXinterchartoks 2 2 = {\nobreak\xtxHanGlue}
%<latexrelease> \global\XeTeXinterchartoks 2 3 = {\xtxHanGlue}
%<latexrelease> \global\XeTeXinterchartoks 3 1 = {\xtxHanGlue}
%<latexrelease> \global\XeTeXinterchartoks 3 2 = {\xtxHanGlue}
%<latexrelease> \global\XeTeXinterchartoks 3 3 = {\nobreak\xtxHanGlue}
%<latexrelease> \fi
%<latexrelease>\EndIncludeInRelease
%<*2ekernel>
% \end{macrocode}
% \changes{v2.0d}{2015/02/03}{Set \cs{lccode} for \texttt{-} with Unicode
% engines}
% There is one over-ride that makes sense here (see below for the same for
% $8$-bit engines): setting the lccode for |-| to itself.
% \begin{macrocode}
\lccode`\- =`\- % default hyphen char
% \end{macrocode}
XeTeXクラスの読み込みには2つのバージョンがあることがわかります。これは.ini
ファイルの変更を反映したもので、等
プレーンTeXの場合、のみUnicode データをフォーマットにロードする方法はファイル内にあります.ini
。したがって、ローダーは他のもの (Unicode 基本データや Unicode 数学モード情報など) とともにそこにあります。