我想知道引文标签中的作者如何也能成为超链接的一部分。我手动更改了参考文献的样式。以下 MWE 显示了我使用的包。
\begin{filecontents}{\jobname.bib}
@book{Labov1972,
Address = {Philadelphia},
Author = {William Labov},
Publisher = {University of Pennsylvania Press},
Title = {Sociolinguistic Patterns},
Year = {1972}}
@book{Chomsky1957,
Address = {The Hague},
Author = {Noam Chomsky},
Publisher = {Mouton},
Title = {Syntactic Structures},
Year = {1957}}
\end{filecontents}
\documentclass[]{scrreprt}
\usepackage{hyperref}
\usepackage[ngerman]{babel}
%----------------------------------------------------------------------
% Bibliothek
%----------------------------------------------------------------------
% style einstellen
\usepackage[
backend=biber,
style=ext-authoryear,
backref=true,
doi=false,
isbn=false,
url=false,
articlein=false,
dashed=false,
introcite=plain,
labelalpha=true
]{biblatex}
%% Style Schriftum direkt aus dem Manual kopiert
\DeclareFieldFormat{bbx@introcite}{\mkbibbrackets{#1}}
\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addcomma\space}
\UndeclareInnerCiteDelims{bbx@introcite}
\renewcommand*{\introcitepunct}{\quad}
\setlength\bibitemsep{1.5\itemsep}
% Bei mehreren Autoren et al.
\DefineBibliographyStrings{ngerman}{
andothers = {{et\,al\adddot}},
}
% Keine Anführungszeichen beim Titel
\DeclareFieldFormat[article]{title}{{#1}}
%% Style des Verweises im Text
% Eckige Klammern um Autor Jahr
\DeclareOuterCiteDelims{cite}{[}{]}
% [Autor Jahr] -> [Autor, Jahr]
\renewcommand*{\nameyeardelim}{\addcomma\space}
\DefineBibliographyStrings{german}{
backrefpage={zitiert auf Seite:},
backrefpages={zitiert auf Seiten:}
}
%% Laden der Bibliothek
\addbibresource{\jobname.bib}
%----------------------------------------------------------------------
% Ende Bibliothek
%----------------------------------------------------------------------
\begin{document}
Text text \cite{Chomsky1957}
\printbibliography
\end{document}
在屏幕截图中您可以看到链接中仅包含年份。
答案1
使用类似的策略超链接名称与 biblatex 作者年份 (biblatex 1.4b),但是用新的\letbibmacro
代替,\restorebibmacro
我们可以得出以下 MWE。
请注意,我们还需要阻止introcite
输出重现链接。有了足够新的版本biblatex-ext
,我们就可以实现\AtIntrocite{\DeclareFieldFormat{linkallcite}{#1}}
这一点。
(我删除了注释以使示例更紧凑,并更改了一两个小细节。)
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[
backend=biber,
style=ext-authoryear,
backref=true,
doi=false,
isbn=false,
url=false,
articlein=false,
dashed=false,
introcite=plain,
]{biblatex}
\usepackage{hyperref}
\DeclareFieldFormat{bbx@introcite}{\mkbibbrackets{#1}}
\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addcomma\space}
\UndeclareInnerCiteDelims{bbx@introcite}
\renewcommand*{\introcitepunct}{\quad}
\setlength\bibitemsep{1.5\itemsep}
\DeclareFieldFormat[article]{title}{#1}
\DeclareOuterCiteDelims{cite}{\bibopenbracket}{\bibclosebracket}
\DeclareFieldFormat{linkallcite}{%
\DeclareFieldFormat{bibhyperref}{##1}%
\bibhyperref{#1}%
}
\AtIntrocite{\DeclareFieldFormat{linkallcite}{#1}}
\letbibmacro{cite:orig}{cite}
\renewbibmacro{cite}{%
\printtext[linkallcite]{%
\usebibmacro{cite:orig}}}
\DeclareDelimFormat{nameyeardelim}{\addcomma\space}
\DefineBibliographyStrings{german}{
andothers = {{et\,al\adddot}},
backrefpage = {zitiert auf Seite:},
backrefpages = {zitiert auf Seiten:},
}
\addbibresource{biblatex-examples.bib}
\begin{document}
Text text \cite{sigfridsson}
\printbibliography
\end{document}