平均能量损失

平均能量损失

我需要以斜体打印( Pkg)et al.的输出。如\textcite{}biblatex这个答案\xpatchbibmacro{}这可以通过使用包来实现xpatch

将此命令放在文档本身或cls提供文件的文件中均latex2e class不会出现问题。但是,当在文件中使用该命令时,ExplClass修补将停止工作。

有什么办法可以让修补程序正常工作吗ExplClass,或者应该将其作为错误报告给维护者xpatch


平均能量损失

可编译tex文件

\documentclass{TestExplClass}

\addbibresource{biblatex-examples.bib}

\begin{document}
  \textcite{companion} \citeauthor{companion}
  \printbibliography
\end{document}

被调用的cls文件

\NeedsTeXFormat{LaTeX2e}
\RequirePackage{ expl3 , xpatch }
\ProvidesExplClass
  {TestExplClass}
  {2017/10/22}
  {0.1}
  {Class that is having problems}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
\ProcessOptions\relax

\LoadClass{report}

\RequirePackage[english]{babel}
\RequirePackage{csquotes}
\RequirePackage[backend=biber,style=chem-angew]{biblatex}

\xpatchbibmacro{name:andothers}{\bibstring{andothers}}{\bibstring[\emph]{andothers}}{}{}

\endinput

答案1

防止此类问题最简单的方法expl3是跳出体制\ExplSyntaxOn...\ExplSyntaxOff,将\xpatchbibmacro声明转变为\AtBeginDocument,保持传统意义上的“活力” :name:anotherTeX/LaTeX

无论如何,修补应该在文档级别进行,所以\AtBeginDocument在我看来,这是正确的做法。

\NeedsTeXFormat{LaTeX2e}
\RequirePackage{ expl3 , xpatch }
\ProvidesExplClass
  {TestExplClass}
  {2017/10/22}
  {0.1}
  {Class that is having problems}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
\ProcessOptions\relax

\LoadClass{report}

\RequirePackage[english]{babel}
\RequirePackage{csquotes}
\RequirePackage[backend=biber,style=chem-angew]{biblatex}

\AtBeginDocument{
  \xpatchbibmacro{name:andothers}{\bibstring{andothers}}{\bibstring[\emph]{andothers}}{\typeout{Success}}{\typeout{Failure}}
}
\endinput

MWE-代码(与OP无变化)

\documentclass{TestExplClass}

\addbibresource{biblatex-examples.bib}

\begin{document}
  \textcite{companion} \citeauthor{companion}
  \printbibliography
\end{document}

在此处输入图片描述

相关内容