下载新软件包并运行时
tex packagename.ins
你总是会得到一堆文件,包括该.def
文件。文件中也提到了它.sty
。显然,这是用于某事的定义。
但是它到底是用来做什么的呢?在共享 LaTeX 项目时可以省略它吗?
答案1
通常带有扩展名的文件.def
会收集一长串类似的定义,这会使.sty
文件变得很长且难以阅读,或者可能与其他包共享。
如果tex packagename.ins
创建一个.def
文件,那么这个是包结构的一部分,不能省略。
典型示例是<encoding>enc.def
如下t1enc.def
加载的文件fontenc
:
\ProvidesFile{t1enc.def}
[2005/09/27 v1.99g
Standard LaTeX file]
\DeclareFontEncoding{T1}{}{}
\DeclareTextAccent{\`}{T1}{0}
\DeclareTextAccent{\'}{T1}{1}
\DeclareTextAccent{\^}{T1}{2}
\DeclareTextAccent{\~}{T1}{3}
<...>
\DeclareTextSymbol{\NG}{T1}{141}
\DeclareTextSymbol{\OE}{T1}{215}
\DeclareTextSymbol{\O}{T1}{216}
\DeclareTextSymbol{\SS}{T1}{223}
\DeclareTextSymbol{\TH}{T1}{222}
\DeclareTextSymbol{\ae}{T1}{230}
\DeclareTextSymbol{\dh}{T1}{240}
\DeclareTextSymbol{\dj}{T1}{158}
\DeclareTextSymbol{\guillemotleft}{T1}{19}
\DeclareTextSymbol{\guillemotright}{T1}{20}
<...>
将长列表放在单独的文件中可以使其更易于维护和搜索。同样,inputenc
使用.def
文件来列出输入字符与其连接的输出之间的配对列表。
一些其他软件包使用一些.def
文件来存放“上下文相关”代码。例如graphics
/graphicx
和hyperref
将引擎相关代码(用于latex
/ dvilualatex
、pdflatex
/lualatex
和xelatex
)放在.def
诸如pdftex.def
and dvips.def
( graphics
) 或hpdftex.def
and hdvips.def
( hyperref
) 之类的文件中。
其他包,特别是或bidi
,使用文件来加载代码,具体取决于文档中加载的包。xepersian
minitoc
.def
.sto
在某些情况下,可能最好使用诸如(“样式选项”,模仿标准类所使用的)之类的扩展.clo
,但传统有其影响。只要名称是唯一的,使用的扩展就无关紧要。