拆分类文件

拆分类文件

我正在编写一个类文件,使用了很多常量(长度、颜色、字符串……),为了简洁起见,我想把它们从文件中取出来cls。我试过了

\ProvidesExplClass{textbook}{2015/05/23}{0.1}{A class for typesetting textbooks}
\input{textbook_consts}

textbook_consts.tex目录中的常量textbook.cls。当然它不起作用:在使用\documentclass{textbook}文件时尝试在中输入文件它是目录。

确切地说,开发目录的结构是

.
├── test
│   ├── test.tex
│   └── textbook.cls -> ../textbook.cls
├── textbook.cls
└── textbook_consts.tex

test.tex是我使用的地方\documentclass{textbook}

有什么办法可以做我想做的事吗?

答案1

为了测试目的,您可以简单地创建一个符号链接,就像textbook_consts.tex您对类文件所做的那样。

在上层,你可以保留类文件和定义文件的多个版本,只要你有指向最新版本(或你想要测试的版本)的符号链接。所以你可以

├── test
│   ├── test.tex
│   ├── textbook.cls -> ../textbook.cls
│   └── textbook_consts.tex -> ../textbook_consts.tex
├── textbook.cls -> textbook-0.02.cls
├── textbook_consts.tex -> textbook_consts-0.02.tex
├── textbook-0.01.cls
├── textbook_consts-0.01.tex
├── textbook-0.02.cls
└── textbook_consts-0.02.tex

但是,最遵循的传统是给.def这些辅助文件加上下划线。不过,我会避免使用下划线,因为至少有一个包会更改其类别代码。不过,这没什么大不了的,因为通常包的加载时间比类文件晚。

当你完成开发后,你可以将相关文件放在textbook主树之一下的目录中:

<TREE>/tex/latex/textbook/

<TREE>对于 TeX Live 来说,可以有三层含义:

/usr/local/texlive/2015/texmf-dist
/usr/local/texlive/texmf-local
~/texmf

指主树、本地树和个人树。

不建议将非分布式文件添加到主树,因为升级后您将失去对它们的引用。将文件添加到本地树需要运行mktexlsr(并且文件将可供您机器的所有用户使用),而将文件添加到个人树则不需要运行。

注意,个人树是~/Library/texmf使用 MacTeX 时使用的。

在运行 MiKTeX 的 Windows 机器上,个人树和本地树默认不可用(参见在 MiKTeX 中创建本地 texmf 树)。

相关内容