我需要以斜体打印( 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:another
TeX/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}