禁用 LyX 前导

禁用 LyX 前导

在 LyX 中,我想知道是否有一种方法,对于给定的文档,禁用 LyX 自动添加的所有前言部分,仅保留编译之前的用户定义的前导码(文档->设置->前导码)。

这似乎是一个奇怪的要求,但这样做有两大优点:

  • LyX 通常会预加载具有其自己的选项的包,并且无法在用户定义的前言中更改它们。
  • 导出用户定义的前言更容易(我将它存储在 preamble.tex 文件中,然后只需将输入{.../preamble.tex} 放入新的 LyX 或 LaTeX 文档中即可。

有人知道怎么做吗?

编辑:我找到了解决方案,见下文。感谢其他人花时间解决我的问题。

答案1

我找到了自己的仅限 LyX 的解决方案,如下所示:

步骤 1:创建自定义类,使用这个帖子。因此,我基于书籍类创建了一个文件“course.cls”,并将其注册到 LyX 类数据库中。另请参阅这个帖子将 .cls 放在硬盘的任何位置。

第 2 步:在 LyX 中更改文档类别(文档->设置->文档类别)

步骤 3:在 course.cls 中,在 \LoadClassWithOptions{...} 之后添加

\usepackage{afterpackage}
\AfterPackage{inputenc}{
\PopDefaultHookLabel
\input{Path/To/My/Own/Preamble.tex}
\usepackage{docmute}
\docmute
}

afterpackage 包允许在加载 inputenc 包后立即执行一段代码,这通常是 LyX 自动前言的第三行,在 LyX 添加任何特定内容之前。然后你添加自己的前言,最后 docmute 包会丢弃前言的其余部分。

这是唯一有效的解决方案。我尝试输入一个前导码,然后使用 docmute,LyX 前导码的其余部分不会被丢弃(似乎该类有自己的前导码,它是受 docmute 影响的)。

这一事实似乎也会扰乱一些钩子,但添加 \PopDefaultHookLabel 可以解决这个问题。然后,您可以复制并粘贴整个 LyX 序言,并根据需要对其进行修改。还要注意,在这样做时,LyX 序言中存在的一些特殊字符(如 é è)必须替换为它们的 '{e} 和 `{e} 对应字符。

相关内容