我有一个很重的类定义,想修改它以便与预编译前言。
最小示例
序言.tex
\documentclass{myClass}
\def\preambleloaded{Precompiled preamble loaded.}
主文本
\ifdefined\preambleloaded\typeout{\preambleloaded}\else\input{preamble}\fi
\usepackage{blindtext}
\begin{document}
\blindtext
\end{document}
我的Class.cls
\def\filename{myClass}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{fixltx2e}
\ProcessOptions\relax
\LoadClass{scrbook}
\RequirePackage[english]{babel}
\RequirePackage{etoolbox}
\newcommand*{\@Author}{George Orwell}
\AtBeginDocument{
Hello World! My name is \@Author!
\newline
}
要编译序言.tex我用:
lualatex -ini -job-name="main" "&lualatex preamble.tex\dump"
以及主文本
lualatex -shell-escape "&main main.tex"
在 TexStudio 中使用最新的 MikTex 发行版。
到目前为止一切正常我得到了
实际问题
现在我想通过作者姓名通过在序言中定义/重新定义它来添加到类中,如下所示:
序言.tex
\documentclass[Aldous Huxley]{myClass}
\def\preambleloaded{Precompiled preamble loaded.}
或者
\documentclass{myClass}
\renewcommand{\@Author}{Aldous Huxley}
\def\preambleloaded{Precompiled preamble loaded.}
我怎样才能做到这一点?
我也见过这个问题,但无法将其应用到我的情况。
答案1
\documentclass{myClass}
\renewcommand{\@Author}{Aldous Huxley}
\def\preambleloaded{Precompiled preamble loaded.}
@
如果当时是一封字母(但这里没有)就会起作用,或者更简单地使用类定义的\Author
命令。
这将起作用:
序言.tex
\documentclass{myClass}
\Author{Aldous Huxley}
\def\preambleloaded{Precompiled preamble loaded.}
我的Class.cls
\def\filename{myClass}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{fixltx2e}
\ProcessOptions\relax
\LoadClass{scrbook}
\RequirePackage[english]{babel}
\RequirePackage{etoolbox}
\newcommand*{\@Author}{George Orwell}
\newcommand*{\Author}[1]{\renewcommand*{\@Author}{#1}}
\AtBeginDocument{
Hello World! My name is \@Author!
\newline
}