我正在尝试以我自己的 BibLaTeX 样式更改姓名首字母的格式,但无法使其正常工作。
以下是 MWE:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareNameFormat{LAST-first}{%
\usebibmacro{name:family-given}
{\MakeUppercase{\namepartfamily}}%.. WORKS
% {\namepartgiveni}%................ WORKS
{\MakeLowercase{\namepartgiveni}}%.. DOESN'T WORK
{\namepartprefix}%
{\namepartsuffix}%
\usebibmacro{name:andothers}%
}
\DeclareNameAlias{default}{LAST-first}%
\begin{document}
\cites{aksin}{baez/article}{bertram}
\printbibliography
\end{document}
(我实际上想有条件地用小写字母打印整个名字,但我认为仅用\namepartgiveni
小写字母就足以说明问题。)
我也尝试在宏中更改它name:family-given
,但出现相同的错误(! Missing = inserted for \ifnum.
等等)。
编辑:
以下回答实际上不符合我的要求,因为它不仅改变了参考书目,还改变了引文的风格。以下是另一个 MWE:
\documentclass{article}
\usepackage[style=abnt]{biblatex}
\addbibresource{biblatex-examples.bib}
\renewcommand*{\mkbibnamefamily}[1]{\MakeUppercase{#1}}
\begin{document}
\textcites{aksin}{baez/article}{bertram}
\printbibliography
\end{document}
如您所见,名称在正文中也是大写的,而不仅仅是在参考书目中。所以我又回到了原点。有什么想法吗?
答案1
好吧,我甚至不知道我是如何设法弄清楚这一点的,因为它不在手册中,我只是从中随机读取了几行代码biblatex.def
,但显然我们可以通过重新定义来改变每个部分的格式\mkbibnamefamily
,\mkbibnamegiven
等等。
因此,对于我最初的例子来说,这是可行的:
\renewcommand*{\mkbibnamegiven}[1]{\ifgiveninits{\MakeLowercase{#1}}{#1}}
我不确定这是否是最佳做法,所以如果有人有异议,请告诉我。不过到目前为止,它似乎运行良好。
编辑:根据@moewe 上面的评论,重新定义必须在内部,\AtBeginBibliography
这样它才不会影响引用。