从主文件加载时,thmname 未在子文件中被替换

从主文件加载时,thmname 未在子文件中被替换

我有一个像这样定义的定理样式(基于这个答案https://tex.stackexchange.com/a/65955/228413):

\newtheoremstyle{note}% name
    {10pt}%             space above
    {10pt}%             space below
    {}%                 body font
    {}%                 indent amount
    {}%                 theorem head font
    {}%                 punctuation after theorem head
    {\newline}%         space after theorem head
    {\underline{\thmname{\@ifempty{#3}{#1}\@ifnotempty{#3}{#3}}}} % theorem head spec

....

\theoremstyle{note}
\newtheorem*{note}{Notiz}

当在子文件中使用此环境时,它会在自行编译时产生正确的结果:

\begin{note}[Title]
    \lipsum[4][1-3]
\end{note}

标题正确显示为“标题”

但是当包含相同的文件(\subfile{file_name})时,结果如下所示:

标题显示为“ifemptyTitleNotizifnotemptyTitleTitle”

是什么原因造成的?我该如何解决?

提前致谢!

答案1

您必须将定义括\newtheoremstyle\makeatletter和之间\makeatother

\makeatletter % <<<<<<<<<<<<<<<<<< HERE <<<<<<<<<<<<<<
\newtheoremstyle{note}% name
    {10pt}%             space above
    {10pt}%             space below
    {}%                 body font
    {}%                 indent amount
    {}%                 theorem head font
    {}%                 punctuation after theorem head
    {\newline}%         space after theorem head
    {\underline{\thmname{\@ifempty{#3}{#1}\@ifnotempty{#3}{#3}}}} % theorem head spec
\makeatother % <<<<<<<<<<<<<<<<<< HERE <<<<<<<<<<<<<<

您的问题与软件包无关subiles。(好吧,令人惊讶的是,它在编译子文件时完全有效。)检查您从中复制代码的源代码。在那里您还会找到这两个额外的命令。

相关内容