我创建了一个文件,它提供了方便的选项来更改我所有文档的设置。例如:
\def\BookFontRoman{Gentium Plus}
\def\BookFontCJK{Adobe Song Std}
\def\PageWidth{280}
\def\PageHeight{209}
\def\DisplayFootnotes{1} %1=yes, 0=no
\def\LongTitlePage{1} %1=yes, 0=no
保存为settings.tex
,可以通过 读取\input{settings}
。我的文档还包含etoolbox
if-then 条件来检查一些值。但是,我还使用了一些BASH
脚本来协助生成一些 LaTeX 代码。
这有一些好处:
- 我可以为我的所有文档建立一致的设置。
- 我不需要编辑关键源代码来进行这些格式调整。
您能推荐一种更好的存储设置的方法吗?
- 是否有更简单的格式可以将这些信息放入单个文件中?
- 是否有解决方案可以允许
BASH
脚本也访问这些信息或(如果太困难)访问稍后存储在文件中的其他信息(被忽略XeTeX
)?
答案1
我不会使用文件,而是.tex
使用包或包装器类,如答案中所示“许多文件,相同的序言”。
bash
语法与 LaTeX 语法非常不同,因此我不会尝试使用脚本解析 LaTeX 设置bash
。但您可以向包或包装器类添加命令,以编写.sh
包含所有设置的文件。bash
然后可以编写一个最小文档并运行 LaTeX 以生成文件.sh
,例如
% example package
\ProvidesPackage{mysetting}[2011/11/23]
\RequirePackage{etoolbox}% because you're using new booleans with etoolbox
\newcommand*{\examplesetting}{Okay}
\newcommand*{\anothersetting}{OK}
% …
\newwrite\bashsettings
\newcommand*{\writesettingsto}[1]{%
\immediate\openout\bashsettings #1
\immediate\write\bashsettings{%
examplesetting='\examplesetting'^^J%
anothersetting='\anothersetting'
}%
\closeout\bashsettings
}
bash 脚本可以
echo '\documentclass{minimal}\usepackage{mysetting}\writesettingto{mysettings.sh}\begin{document}\end{document}' > createsettings.tex
latex -interaction=batchmode createsettings.tex || exit -1
. mysettings.sh
您可以使用配置文件来扩展它,例如,mysettings.cfg
它将在包的末尾加载,例如
\ProvidesFile{mysetting.cfg}[2011/11/23]
\renewcommand*{\anothersetting}{Not OK}
\endinput
并添加行
\InputIfFileExists{mysetting.cfg}{}{}
在 的末尾mysetting.sty
。因此,您不需要编辑包(或包装器类)来更改项目的设置,而只需将 放入mysettings.cfg
项目文件夹即可。