在 Lyx 自定义布局文件中将“part”更改为“act”?

在 Lyx 自定义布局文件中将“part”更改为“act”?

我有一个自定义布局文件,它附加到我的文档中并由 Lyx 使用。该文件的格式为~/.lyx/layouts

这个问题告诉如何通过菜单向序言中添加一行:

\renewcommand\partname{Act}

如果可能的话,我希望将所有格式保留在布局文件中,并避免在 Lyx 菜单中设置内容。

所以我把这一行添加到Preamble我的布局文件的部分,并尝试

\renewcommand{\partname}{Experiment}

但它不起作用。重新配置、重新启动并重新渲染 PDF 后,这些部分仍然称为“部分”。

有没有办法让布局文件中的这个改变(“part”到“act”)起作用?

有没有一种方法可以让编辑器从布局文件内部反映这种变化,而无需改变类的默认定义book(我的布局文件扩展了它)。

我的 Lyx 版本是 Linux 上的 2.2.3。

更新:可能\renewcommand{\partname}{Act}是错误的命令,因为如果您将它放在 Lyx 文档设置中的 LATEX 前言部分中,它也不起作用。

更新二:这是一个简化的布局文件:

#  \DeclareLaTeXClass[book]{book (My Book Style)}

# Input general definitions
Input stdclass.inc


MaxCounter              Counter_Section
SecNumDepth             3


Preamble

% Tell the TOC not to include any levels below "chapter"
\setcounter{tocdepth}{0}

% Change "Part" to "Act"
\AtBeginDocument{\renewcommand{\partname}{Act}}
EndPreamble

答案1

我认为问题出在 babel,因为它\partname每次发出时都会重新定义\setlanguage{<lang>}(例如在文档的开头),请参见上面的问题这里

正如那篇文章所建议的,我们需要使用\addto\extrasenglish{\renewcommand{\partname}{Act}}而不是\renewcommand{\partname}{Act}。问题是 lyx 在前言的末尾加载 babel,因此添加\addto\extrasenglish{\renewcommand{\partname}{Act}}布局键“Preanble”不起作用,因为命令会在定义之前展开。

因为 lyx 有用于段落布局的“LangPreamble”键(请参阅 lyx 自定义指南中的第 5.3.8 节)。您不能直接在布局类文件中使用此键,而只能在段落布局的定义中使用,因此我们将重新定义 Part 布局,使其与 完全相同,stdclass.inc但使用我们想要的 LangPreamble。

#  \DeclareLaTeXClass[book]{book (My Book Style)}

# Input general definitions
Input stdclass.inc

Style Part
    Category              Sectioning
    Margin                Dynamic
    LabelString           "Part \thepart"
    LabelType             Static
    TocLevel              -1
    LabelCounter          part
    LatexType             Command
    LatexName             part
    NeedProtect           1
    NextNoIndent          1
    ToggleIndent          Never
    Labelsep              xxx
    ParSkip               0.4
    TopSep                4
    BottomSep             4
    ParSep                0.8
    Align                 Center
    Alignpossible         Center
    Argument 1
        LabelString   "Short Title|S"
        Tooltip       "The part as it appears in the table of contents/running headers"
        InsertCotext  1
        IsTocCaption  1
    EndArgument
    Font
       Series              Bold
       Size                Huge
    EndFont
    HTMLTag               h1
    LangPreamble
    \addto\captionsenglish{\renewcommand{\partname}{Act}}
    EndLangPreamble
 End


MaxCounter              Counter_Section
SecNumDepth             3


Preamble

% Tell the TOC not to include any levels below "chapter"
\setcounter{tocdepth}{0}
EndPreamble

相关内容