它不是开箱即用的:它将名字和姓氏视为姓氏。我猜“扩展后”会起作用,但我很久没有使用过此功能了。
\documentclass{article}
\usepackage[french]{babel}
\usepackage{expl3}
\usepackage{glossaries}
\usepackage{csquotes}
\usepackage[backend=biber,autolang=other]{biblatex}
\DefineBibliographyStrings{french}{
in = {dans},
}
\newglossary*{cont}{Contact}
\newglossaryentry{dupont}
{
type=cont,
name={Dupont, Michel},
description={}
}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{lefoo
,author = {Dupond, Marie}
,title = "TITRE"
,journal = "LE JOUR"
,year = "AAAA"
,language={french}
,hyphenation={french}
}
@article{lebar
,author = {\gls{dupont}}
,title = "TITRE"
,journal = "LE JOUR"
,year = "AAAA"
,language={french}
,hyphenation={french}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
Une citation: \autocite{lefoo}.
Une citation au milieu du texte: Comme \textcite{lebar} a dit \dots
\printbibliography
\end{document}
答案1
我担心这根本行不通。
姓名字段需要由 Biber(或 BibTeX)解析以提取姓名的不同部分(名字、姓氏、后缀和前缀),因为 Biber 不了解一般的 LaTeX 宏(它知道一些针对单个非 ASCII 字符的宏),所以无法像 那样\gls{dupont}
处理Dupont, Michel
。
在示例中\gls{dupont}
被视为作者的唯一姓氏,并且宏后来才被扩展以产生您看到的输出。
没有任何数量的\expandafter
s 可以帮助您将预期的名称传递给 Biber。您可以使用源映射再次替换宏,但这似乎有点倒退,并且您会失去 的所有其他好处\gls
。
\documentclass{article}
\usepackage[french]{babel}
\usepackage{expl3}
\usepackage{glossaries}
\usepackage{csquotes}
\usepackage[backend=biber,autolang=other]{biblatex}
\DefineBibliographyStrings{french}{
in = {dans},
}
\newglossary*{cont}{Contact}
\newglossaryentry{dupont}
{
type=cont,
name={Dupont, Michel},
description={}
}
\DeclareSourcemap{
\maps[datatype=bibtex, overwrite]{
\map{
\step[fieldsource=author, match=\regexp{\\gls\{dupont\}}, replace={Dupont, Michel}]
}
}
}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{lefoo
,author = {Dupond, Marie}
,title = "TITRE"
,journal = "LE JOUR"
,year = "AAAA"
,language={french}
,hyphenation={french}
}
@article{lebar
,author = {\gls{dupont}}
,title = "TITRE"
,journal = "LE JOUR"
,year = "AAAA"
,language={french}
,hyphenation={french}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
Une citation: \autocite{lefoo}.
Une citation au milieu du texte: Comme \textcite{lebar} a dit \dots
\printbibliography
\end{document}
您可能需要采用不同的方式来实现您想要做的事情\gls
。