如何将字符串传递给自定义文档类以便在 lualatex 中的预编译前言中使用?

如何将字符串传递给自定义文档类以便在 lualatex 中的预编译前言中使用?

我有一个很重的类定义,想修改它以便与预编译前言


最小示例

序言.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

}

相关内容