创建通用设置文件

创建通用设置文件

我创建了一个文件,它提供了方便的选项来更改我所有文档的设置。例如:

\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}。我的文档还包含etoolboxif-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项目文件夹即可。

相关内容