biblatex hyperref 启用完整脚注的超链接

biblatex hyperref 启用完整脚注的超链接

我注意到,我\footcite应该使用的 shyperref并没有完全“超链接”。只有一部分,有时甚至是单词之间的空格是超链接的,并且会引用参考书目中的正确条目。因此,有时找到指向正确 bib 条目的超链接部分可能会非常烦人footcite

有什么想法我可以如何改变它以便使整体\footcite成为一个超链接?

我附加了 MWE 和展示该行为的图片。

% !TEX encoding = UTF-8 Unicode
\documentclass{scrartcl}%
\usepackage[ngerman]{babel}%
\usepackage[utf8]{inputenc}%
\usepackage[T1]{fontenc}%
\usepackage{lipsum}%
\usepackage[%
backend=biber,%
bibstyle=authortitle,% BIBLIOGRAPHY
citestyle=authoryear,% CITATIONS
hyperref=true,%
backref=false,%
sorting=nty,%
maxnames=99,%
isbn=false,%
block=ragged,%
dashed=false,%
]{biblatex}
\usepackage{hyperref}
% ==========================================================
%
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@COMMENTARY{beck.ok,
    MAINTITLE       = {Beck'scher Online-Kommentar BGB},
    SHORTTITLE      = {},
    EDITOR          = {Bamberger, Heinz Georg and Roth, Herbert and Hau, Wolfgang and Poseck, Roman},
    SHORTHAND       = {BeckOK},
    VOLUME          = {},
    TITLE           = {},
    YEAR            = {2018},
    EDITION         = {45},
    OPTIONS         = {howcited},
}

@COMMENTARY{muko.bd1,
    MAINTITLE       = {Münchener Kommentar zum Bürgerlichen Recht},
    SHORTTITLE      = {},
    SHORTHAND       = {MünchKomm},
    EDITOR          = {Säcker, Franz},
    SHORTAUTHOR     = {},
    VOLUME          = {1},
    TITLE           = {Allgemeiner Teil},
    YEAR            = {2015},
    ADDRESS         = {},
    EDITION         = {7},
    OPTIONS         = {howcited},
}

@INCOLLECTION{fs.roxin,
    AUTHOR          = {Beckemper, Katharina},
    TITLE           = {Unvernunft als Zurechnungskriterium in den „Retterfällen“},
    EDITOR          = {Manfred, Heinrich},
    BOOKTITLE       = {Strafrecht als Scientia Universalis - Festschrift f{\"u}r Claus Roxin zum 80. Geburtstag},
    SHORTTITLE      = {FS Roxin},
    YEAR            = {2011},
    PAGES           = {397--411},
    OPTIONS         = {fshowcited},
}

@ARTICLE{jus2007.881,
    author          = {Jörg Neuner},
    title           = {Was ist eine Willenserklärung?},
    journal         = {JuS},
    year            = {2007},
    pages           = {881--888},
}
%   
\end{filecontents}
\addbibresource{\jobname.bib}
%
%
%
% === merged files ====
%
%
% biblatex.cfg
% biblatex.cfg
% biblatex.cfg
%%%
\DeclareNameAlias{sortname}{family-given-bold}
\DeclareNameFormat{family-given-bold}{\mkbibbold{%
  \ifgiveninits
    {\usebibmacro{name:family-given}{\namepartfamily}{\namepartgiveni}{\namepartprefix}{\namepartsuffix}}
    {\usebibmacro{name:family-given}{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}%
  \usebibmacro{name:andothers}}}
% ==========================================================
% === Titel nicht kursiv ===
%
\DeclareFieldFormat{citetitle}{\normalfont{#1}}% Zitate: Schriftart der Titel
\DeclareFieldFormat{title}{\normalfont{#1}}% Titel im LitVZ
\DeclareFieldFormat{maintitle}{\normalfont{#1}}
\DeclareFieldFormat{journaltitle}{\normalfont{#1}}%
%
\DeclareFieldFormat[incollection]{title}{#1}
\DeclareFieldFormat[incollection]{booktitle}{\normalfont{#1}}
\DeclareFieldFormat[incollection]{editor}{\normalfont{#1}}
% ==========================================================
% === kein Punkt in Library ===
%
\renewcommand{\finentrypunct}{}% Kein Punkt am Ende des Eintrags im LitVZ
% ==========================================================
% === Hrsg. ===
%
\DeclareFieldFormat{authortype}{\mkbibparens{#1}}% Authortyp in Klammern
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}% Editortyp in Klammern
\DeclareFieldFormat[incollection]{editortype}{\mkbibparens{#1}}%
% ==========================================================
\DeclareDelimFormat{authortypedelim}{\addspace}% Kein Komma nach Autor
\DeclareDelimFormat{editortypedelim}{\addspace}% Kein Komma nach Editor
% ==========================================================
\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addspace}%\labelnamepunct% Kein Punkt zwischen Autoren und Werk
% ==========================================================
% === Auflage/Aufl. ===
%
\DefineBibliographyStrings{german}{%
  edition          = {\ifbibliography{Auflage}{Aufl\adddot}},% 'Auflage' statt 'Aufl.'
}
% ==========================================================
% === kein Anfuhrungszeichen im Titel ===
%
\DeclareFieldFormat[article]{title}{{#1\isdot}}
\DeclareFieldFormat[incollection]{citetitle}{{#1\isdot}}
% ==========================================================
% === kein S. bei @article & @incollection ===
%
\DeclareFieldFormat[article]{pages}{#1}%
\DeclareFieldFormat[incollection]{pages}{#1}%
% ==========================================================
% === Erkennt Satzzeichen & setzt kein Komma ausser bei Abkurzungen ===
%
\DefineBibliographyExtras{german}{\DeclarePunctuationPairs{comma}{*}}
% ==========================================================
% === @article keine Titel zitieren ===
%
\DeclareFieldFormat[article]{citetitle}{}%
% ==========================================================
% === nur erste Seite zitieren @article @incollection ===
%
 \AtEveryCite{% 
  \DeclareFieldFormat[article,incollection]{pages}{\mkfirstpage{#1}}% 
}% 

% ==========================================================
% === bei @article @incollection postnote in klammern fur seitenzahl ===
%
\AtEveryCite{%
    \DeclareFieldFormat[article, incollection]{postnote}{\mkbibparens{#1}}%
}

% ==========================================================
% === bib driver @commentary ===
%
\DeclareBibliographyDriver{commentary}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{maintitle+title}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{edition}
  \newunit
  \usebibmacro{location+date}%
  \newunit\newblock
  \usebibmacro{finentry}}
% ==========================================================
% === @commentary prenote position === otherwise use: https://tex.stackexchange.com/a/430758/53779
%
\DeclareCiteCommand{\footcite}[\mkbibfootnote]%
  {\ifentrytype{commentary}{}{\usebibmacro{prenote}}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}%
   \ifentrytype{commentary}{\thinspace\thinspace\textbf{\addslash}\thinspace\textit{\usebibmacro{prenote}}}{}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
%
\DeclareCiteCommand{\cite}%[\mkbibcite]%
  {\ifentrytype{commentary}{}{\usebibmacro{prenote}}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}%
   \ifentrytype{commentary}{\thinspace\thinspace\textbf{\addslash}\thinspace\textit{\usebibmacro{prenote}}}{}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
% ==========================================================
% === @incollection herausgeber der festschrift nicht fett ===
%
\DeclareNameAlias{ineditor}{family-given}

\newbibmacro*{bbx:in:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames[ineditor]{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{#1}%
     \clearname{editor}}
    {}}
\newbibmacro*{in:editor}{%
  \usebibmacro{bbx:in:editor}{editorstrg}}
\newbibmacro*{in:editor+others}{%
  \usebibmacro{bbx:in:editor}{editor+othersstrg}}

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \newunit\newblock
  \usebibmacro{in:editor+others}%<----- new macro
  \newunit\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
%  \usebibmacro{editor+others}% OLD
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}
% ==========================================================
% === Kommentare: zitiert als Option ===
%
\newtoggle{tnbcbx@howcited}
\DeclareEntryOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}
\DeclareBibliographyOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}
\DeclareTypeOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}

\newbibmacro{howcited}{%
  \iftoggle{tnbcbx@howcited}
    {\iffieldundef{shorthand}
       {}
       {\setunit{\addspace}%
        \printtext[parens]{%
          \bibstring{citedas}%
          \setunit{\addcolon\space}%
          \printfield{shorthand}%
          \setunit{\addslash}%
          \bibstring[\emph]{bearbeiter}}}}
    {}}

\renewbibmacro{finentry}{\usebibmacro{howcited}\usebibmacro{fshowcited}\finentry}

\NewBibliographyString{bearbeiter}
\DefineBibliographyStrings{ngerman}{
  citedas    = {zitiert als},
  bearbeiter = {Bearbeiter},
}

% ==========================================================
% === Incollection zitiert als option ===
%
\newtoggle{tnbcbx@fshowcited}
\DeclareEntryOption[boolean]{fshowcited}[true]{\settoggle{tnbcbx@fshowcited}{#1}}
\DeclareBibliographyOption[boolean]{fshowcited}[true]{\settoggle{tnbcbx@fshowcited}{#1}}
\DeclareTypeOption[boolean]{fshowcited}[true]{\settoggle{tnbcbx@fshowcited}{#1}}

\newbibmacro{fshowcited}{%
  \iftoggle{tnbcbx@fshowcited}
    {\iffieldundef{shorttitle}
       {}
       {\setunit{\addspace}%
        \printtext[parens]{%
          \bibstring{citedas}%
          \setunit{\addcolon\space}%
          \emph{\printnames{labelname}}%
          \setunit{\addcomma\space}%
          \printfield{shorttitle}%
          }}}
    {}}

\renewbibmacro{finentry}{\usebibmacro{howcited}\usebibmacro{fshowcited}\finentry}
% ==========================================================
% mybiblatexcfg.tex
% mybiblatexcfg.tex
% mybiblatexcfg.tex
%
\renewcommand{\finentrypunct}{}% kein Punkt am Ende im LitVZ
% ==========================================================
\renewcommand*{\mkbibnamefamily}{\textsc}% Autoren in Kapitaelchen
%==========================================================
\AtEveryCite{%
\renewcommand{\mkbibnamefamily}[1]{\mkbibemph{#1}}%
}%
% ==========================================================
\renewcommand*{\multinamedelim}{~\textbf{/}\space}%
  \renewcommand*{\finalnamedelim}{~\textbf{/}\space}%
% ==========================================================
\renewcommand*{\newunitpunct}{\addcomma\space}%
% ==========================================================
\renewbibmacro{in:}{% 
  \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}
% ==========================================================
\renewbibmacro{issue+date}{%
  %\printtext[parens]{% Klammern um Jahr weg
    \printfield{issue}%
    \setunit*{\addspace}%
    \usebibmacro{date}%}%
  \newunit}
% ==========================================================
% =========== print 'Author, Journal Year, firstpage' =========
% ======================== 09.05.18 ====================
\newbibmacro*{cite:article:journal}{%
       \newunit
       \printfield{journaltitle}
       %\newunit% no comma between journal and year
}
%
\newbibmacro*{cite:article:pages}{%
\newunit%\addcomma
\printfield{pages}}
%
\newbibmacro*{cite:book:shorttitle}{%
  \printfield[citetitle]{labeltitle}}
%
\renewbibmacro{postnote}{%
  \iffieldundef{postnote}
    {}
    {%\setunit{%\postnotedelim}%
    \printfield{postnote}}}
% ========================================================
\renewbibmacro{cite}{%
\ifentrytype{commentary}{\usebibmacro{cite:shorthand}}{}%
  \iffieldundef{shorthand}%
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}%
       {\usebibmacro{cite:label}%
        \setunit{\printdelim{nonameyeardelim}}}%
       {\printnames{labelname}%
        \setunit{\printdelim{nameyeardelim}}}%
       \ifentrytype{book}% === field
       {\setunit{\printdelim{nametitledelim}}\usebibmacro{cite:book:shorttitle}}% === true
       {}%\usebibmacro{cite:labeldate+extradate}% === false
        \ifentrytype{article}% === field
        {\usebibmacro{cite:article:journal}\usebibmacro{cite:labeldate+extradate}
        \usebibmacro{cite:article:pages}%
        }% === true
     {}% === false
     \ifentrytype{incollection}%
     {{\setunit{\printdelim{nametitledelim}}}
     \usebibmacro{cite:book:shorttitle}
     \usebibmacro{cite:article:pages}%
     }% === true
     {}% === false
    {\usebibmacro{cite:shorthand}}
    }{}%
    }
%
% ==========================================================
% ==========================================================
% ==========================================================
% ==========================================================
% ==========================================================
% ==========================================================
\makeatletter

% user-level command for printing tabular bibliography
\let\printbibtabular\printbibliography
\patchcmd{\printbibtabular}{\blx@printbibliography}{\bbx@printbibtabular}{}{}
\patchcmd{\printbibtabular}{\blx@printbibliography}{\bbx@printbibtabular}{}{}
\let\bbx@printbibtabular\blx@printbibliography
\patchcmd{\bbx@printbibtabular}{\blx@bibliography}{\bbx@bibtabular}{}{}
\patchcmd{\bbx@printbibtabular}
  {\def\blx@theenv{bibliography}}{\def\blx@theenv{bibtabular}}{}{}


% underlying macros
\def\bbx@bibtabular#1{%
  \blx@langstrings
  \blx@bibheading\blx@theheading\blx@thetitle
  \blx@bibnote\blx@theprenote
  \begingroup
  \blx@bibinit
  \let\@noitemerr\@empty
  \let\blx@noitem\blx@warn@bibempty
  \ifnum\bibinitsep=\z@
    \let\blx@initsep\relax
  \fi
  \ifnum\bibnamesep=\z@
    \let\blx@namesep\relax
  \fi
  \csuse{blx@hook@bibinit}%
  \csuse{blx@hook@bibinit@next}%
  % copy filtered list of entries to internal list macro
  \def\blx@do##1{%
    \blx@ifdata{##1}{%
      \begingroup
      \blx@getdata{##1}%
      \blx@bibcheck
      \iftoggle{blx@skipentry}{}{%
        \global\let\blx@noitem\@empty
        \listadd\blx@tempa{##1}}%
      \endgroup}{}}%
  \let\blx@done\relax
  \blx@listloop{#1}%
  % tabular output for each item in list macro
  \def\do##1{\bbx@tab@label{##1} & \bbx@tab@item{##1}\\}%
  \csuse{blx@env@\blx@theenv}%
  \dolistloop{\blx@tempa}%
  \csuse{blx@endenv@\blx@theenv}%
  \blx@bibnote\blx@thepostnote
  \endgroup
  \endgroup% this closed a goup opened by \printbibtabular
}

\def\bbx@tab@label#1{%
  \begingroup
  \blx@getdata{#1}%
  \blx@setdefaultrefcontext{#1}%
  \blx@setoptions@type\abx@field@entrytype
  \blx@setoptions@entry
  \blx@thelabelnumber
  \blx@initsep
  \blx@namesep
  \csuse{blx@hook@bibitem}%
  \addtocounter{instcount}\@ne
  \blx@anchor
  \csuse{bbx@tabenv@\blx@theenv}\relax
  \endgroup
}

\def\bbx@tab@item#1{%
  \begingroup
  \blx@getdata{#1}%
  \blx@setoptions@type\abx@field@entrytype
  \blx@setoptions@entry
  \blx@thelabelnumber
  \csuse{blx@hook@bibitem}%
  \csuse{blx@item@\blx@theenv}\relax
  \blx@execute
  \blx@initunit
  \blx@beglangbib
  \bibsentence
  \blx@pagetracker
  \blx@driver\abx@field@entrytype
  \blx@postpunct
  \blx@endlangbib
  \endgroup
}

% user-level command for defining tabular bibliography format
\newrobustcmd*{\defbibtabular}[5]{%
  \long\csdef{blx@env@#1}{#2}%
  \long\csdef{blx@endenv@#1}{#3}%
  \long\csdef{bbx@tabenv@#1}{#4}%
  \long\csdef{blx@item@#1}{#5}}

\makeatother

% sortname labels (a robust style should add provision for missing labelnames)
\newbibmacro*{sortname}{%
  \DeclareDelimFormat{multinamedelim}{\addslash\break}%
  \DeclareDelimAlias{finalnamedelim}{multinamedelim}%
  \printnames[sortname]{labelname}}

% bibitem hook to suppress redundant sortname list
\newbibmacro*{omitsortname}{%
  \ifnameundef{labelname}
    {}
    {\clearname{\thefield{labelnamesource}}}}

\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
% demo new tabular bibliography format
\defbibtabular{bibtabular}
  {\def\arraystretch{1.5}%
   \begin{tabular}{@{}L{\dimexpr0.3\textwidth-\tabcolsep\relax}
                      L{\dimexpr0.7\textwidth-\tabcolsep\relax}@{}}}
  {\end{tabular}}
  {\usebibmacro{sortname}}
  {\usebibmacro{omitsortname}}

% add multiline labels in default bibliography format
\defbibenvironment{bibliography}
  {\list
     {\usebibmacro{sortname}}
     {\setlength{\labelwidth}{0.3\textwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
     \renewcommand*{\makelabel}[1]{%
       \nobreak\strut\smash{\parbox[t]\labelwidth{\raggedright##1}}}}
  {\endlist}
  {\item\usebibmacro{omitsortname}}
  \setlength{\bibitemsep}{\itemsep}%
% ==========================================================
%
\begin{document}
%
% ==========================================================
%\printbibliography[title=Literaturverzeichnis alt,heading=bibintoc]
\printbibtabular[title=Literaturverzeichnis,heading=bibintoc]
\tableofcontents% 
% ==========================================================
Test
\footcite[399]{fs.roxin}\footcite[Wendtland][§ 240 Rn. 63]{beck.ok}\footcite[888]{jus2007.881}
%-----
\end{document}

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

提前致谢!

答案1

\printtext[bibhyperref]您可以在 et al的定义中使用 a 。我稍微\cite重构了您的bibmacro,因此它运行得更顺畅一些。我还应用了我已经在您的代码中放入的所有其他小修正citeBiblatex 表格书目。你可能也想看看这些

% !TEX encoding = UTF-8 Unicode
\documentclass{scrartcl}%
\usepackage[ngerman]{babel}%
\usepackage[utf8]{inputenc}%
\usepackage[T1]{fontenc}%
\usepackage{lipsum}%
\usepackage[%
backend=biber,%
bibstyle=authortitle,% BIBLIOGRAPHY
citestyle=authoryear,% CITATIONS
hyperref=true,%
backref=false,%
sorting=nty,%
maxnames=99,%
isbn=false,%
block=ragged,%
dashed=false,%
]{biblatex}
\usepackage{hyperref}
% ==========================================================
%
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@COMMENTARY{beck.ok,
    MAINTITLE       = {Beck'scher Online-Kommentar BGB},
    SHORTTITLE      = {},
    EDITOR          = {Bamberger, Heinz Georg and Roth, Herbert and Hau, Wolfgang and Poseck, Roman},
    SHORTHAND       = {BeckOK},
    VOLUME          = {},
    TITLE           = {},
    YEAR            = {2018},
    EDITION         = {45},
    OPTIONS         = {howcited},
}

@COMMENTARY{muko.bd1,
    MAINTITLE       = {Münchener Kommentar zum Bürgerlichen Recht},
    SHORTTITLE      = {},
    SHORTHAND       = {MünchKomm},
    EDITOR          = {Säcker, Franz},
    SHORTAUTHOR     = {},
    VOLUME          = {1},
    TITLE           = {Allgemeiner Teil},
    YEAR            = {2015},
    ADDRESS         = {},
    EDITION         = {7},
    OPTIONS         = {howcited},
}

@INCOLLECTION{fs.roxin,
    AUTHOR          = {Beckemper, Katharina},
    TITLE           = {Unvernunft als Zurechnungskriterium in den „Retterfällen“},
    EDITOR          = {Manfred, Heinrich},
    BOOKTITLE       = {Strafrecht als Scientia Universalis - Festschrift f{\"u}r Claus Roxin zum 80. Geburtstag},
    SHORTTITLE      = {FS Roxin},
    YEAR            = {2011},
    PAGES           = {397--411},
    OPTIONS         = {fshowcited},
}

@ARTICLE{jus2007.881,
    author          = {Jörg Neuner},
    title           = {Was ist eine Willenserklärung?},
    journal         = {JuS},
    year            = {2007},
    pages           = {881--888},
}
%   
\end{filecontents}
\addbibresource{\jobname.bib}
%
%
%
% === merged files ====
%
%
% biblatex.cfg
% biblatex.cfg
% biblatex.cfg
%%%
\DeclareNameAlias{sortname}{family-given-bold}
\DeclareNameFormat{family-given-bold}{%
  \mkbibbold{%
    \ifgiveninits
      {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
      {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}%
    \usebibmacro{name:andothers}}}
% ==========================================================
% === Titel nicht kursiv ===
%
\DeclareFieldFormat*{citetitle}{#1}% Zitate: Schriftart der Titel
\DeclareFieldFormat*{title}{#1}% Titel im LitVZ
\DeclareFieldFormat*{maintitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1}%
\DeclareFieldFormat*{booktitle}{#1}
% === kein Punkt in Library ===
%
\renewcommand{\finentrypunct}{}% Kein Punkt am Ende des Eintrags im LitVZ
% ==========================================================
% === Hrsg. ===
%
\DeclareFieldFormat{authortype}{\mkbibparens{#1}}% Authortyp in Klammern
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}% Editortyp in Klammern
\DeclareFieldFormat[incollection]{editortype}{\mkbibparens{#1}}%
% ==========================================================
\DeclareDelimFormat{authortypedelim}{\addspace}% Kein Komma nach Autor
\DeclareDelimFormat{editortypedelim}{\addspace}% Kein Komma nach Editor
% ==========================================================
\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addspace}%\labelnamepunct% Kein Punkt zwischen Autoren und Werk
% ==========================================================
% === Auflage/Aufl. ===
%
\DefineBibliographyStrings{german}{%
  edition          = {\ifbibliography{Auflage}{Aufl\adddot}},% 'Auflage' statt 'Aufl.'
}
% ==========================================================
% === kein S. bei @article & @incollection, nur erste Seite im Zitat ===
%
\DeclareFieldFormat[article,incollection]{pages}{%
  \ifcitation
    {\mkfirstpage{#1}}
    {#1}}%
% ==========================================================
% === Erkennt Satzzeichen & setzt kein Komma ausser bei Abkurzungen ===
%
\DefineBibliographyExtras{german}{\DeclarePunctuationPairs{comma}{*}}
% ==========================================================
% === @article keine Titel zitieren ===
%
\DeclareFieldFormat[article]{citetitle}{}%
% ==========================================================

% === bei @article @incollection postnote in klammern fur seitenzahl ===
%
\DeclareFieldFormat[article, incollection]{postnote}{\mkbibparens{#1}}%
% ==========================================================
% === bib driver @commentary ===
%
\DeclareBibliographyDriver{commentary}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{maintitle+title}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{edition}
  \newunit
  \usebibmacro{location+date}%
  \newunit\newblock
  \usebibmacro{finentry}}
% ==========================================================
% === @commentary prenote position === otherwise use: https://tex.stackexchange.com/a/430758/53779
%
\DeclareCiteCommand{\footcite}[\mkbibfootnote]%
  {\ifentrytype{commentary}{}{\usebibmacro{prenote}}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{%
     \DeclareFieldFormat{bibhyperref}{####1}%
     \usebibmacro{cite}%
     \ifentrytype{commentary}
       {\thinspace\thinspace\textbf{\addslash}\thinspace
        \textit{\usebibmacro{prenote}}}
       {}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
%
\DeclareCiteCommand{\cite}%[\mkbibcite]%
  {\ifentrytype{commentary}{}{\usebibmacro{prenote}}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{%
     \DeclareFieldFormat{bibhyperref}{####1}%
     \usebibmacro{cite}%
     \ifentrytype{commentary}
       {\thinspace\thinspace\textbf{\addslash}\thinspace
        \textit{\usebibmacro{prenote}}}
       {}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
% ==========================================================
% === @incollection herausgeber der festschrift nicht fett ===
%
\DeclareNameAlias{ineditor}{family-given}

\newbibmacro*{bbx:in:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames[ineditor]{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{#1}%
     \clearname{editor}}
    {}}
\newbibmacro*{in:editor}{%
  \usebibmacro{bbx:in:editor}{editorstrg}}
\newbibmacro*{in:editor+others}{%
  \usebibmacro{bbx:in:editor}{editor+othersstrg}}

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \newunit\newblock
  \usebibmacro{in:editor+others}%<----- new macro
  \newunit\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
%  \usebibmacro{editor+others}% OLD
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}
% ==========================================================
% === Kommentare: zitiert als Option ===
%
\newtoggle{tnbcbx@howcited}
\DeclareEntryOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}
\DeclareBibliographyOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}
\DeclareTypeOption[boolean]{howcited}[true]{\settoggle{tnbcbx@howcited}{#1}}

\newbibmacro{howcited}{%
  \iftoggle{tnbcbx@howcited}
    {\iffieldundef{shorthand}
       {}
       {\setunit{\addspace}%
        \printtext[parens]{%
          \bibstring{citedas}%
          \setunit{\addcolon\space}%
          \printfield{shorthand}%
          \setunit{\addslash}%
          \bibstring[\emph]{bearbeiter}}}}
    {}}

\NewBibliographyString{bearbeiter}
\DefineBibliographyStrings{ngerman}{
  citedas    = {zitiert als},
  bearbeiter = {Bearbeiter},
}

% ==========================================================
% === Incollection zitiert als option ===
%
\newtoggle{tnbcbx@fshowcited}
\DeclareEntryOption[boolean]{fshowcited}[true]{\settoggle{tnbcbx@fshowcited}{#1}}
\DeclareBibliographyOption[boolean]{fshowcited}[true]{\settoggle{tnbcbx@fshowcited}{#1}}
\DeclareTypeOption[boolean]{fshowcited}[true]{\settoggle{tnbcbx@fshowcited}{#1}}

\newbibmacro{fshowcited}{%
  \iftoggle{tnbcbx@fshowcited}
    {\iffieldundef{shorttitle}
       {}
       {\setunit{\addspace}%
        \printtext[parens]{%
          \bibstring{citedas}%
          \setunit{\addcolon\space}%
          \emph{\printnames{labelname}}%
          \setunit{\addcomma\space}%
          \printfield{shorttitle}%
          }}}
    {}}

\renewbibmacro{finentry}{\usebibmacro{howcited}\usebibmacro{fshowcited}\finentry}
% ==========================================================
% mybiblatexcfg.tex
% mybiblatexcfg.tex
% mybiblatexcfg.tex
%
\renewcommand{\finentrypunct}{}% kein Punkt am Ende im LitVZ
% ==========================================================
\renewcommand*{\mkbibnamefamily}{\textsc}% Autoren in Kapitaelchen
%==========================================================
\AtEveryCite{%
  \renewcommand{\mkbibnamefamily}[1]{\mkbibemph{#1}}%
}%
% ==========================================================
\DeclareDelimFormat{multinamedelim}{~\textbf{/}\space}%
\DeclareDelimAlias{finalnamedelim}{multinamedelim}%
% ==========================================================
\renewcommand*{\newunitpunct}{\addcomma\space}%
% ==========================================================
\renewbibmacro{in:}{% 
  \ifentrytype{article}
    {}
    {\printtext{\bibstring{in}\intitlepunct}}}
% ==========================================================
\renewbibmacro{issue+date}{%
  \printfield{issue}%
  \setunit*{\addspace}%
  \usebibmacro{date}%
  \newunit}
% ==========================================================
% =========== print 'Author, Journal Year, firstpage' =========
% ======================== 09.05.18 ====================
\newbibmacro*{cite:article:journal}{%
  \printfield{journaltitle}}
%
\newbibmacro*{cite:article:pages}{%
  \printfield{pages}}
%
\newbibmacro*{cite:book:shorttitle}{%
  \printfield[citetitle]{labeltitle}}
%
\renewcommand*{\postnotedelim}{\addspace}
% ========================================================
\renewbibmacro{cite}{%
  \iffieldundef{shorthand}%
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}%
       {\usebibmacro{cite:label}%
        \setunit{\printdelim{nonameyeardelim}}}
       {\printnames{labelname}%
        \setunit{\printdelim{nameyeardelim}}}%
     \ifentrytype{book}
       {\setunit{\printdelim{nametitledelim}}%
        \usebibmacro{cite:book:shorttitle}}
       {}%
     \ifentrytype{article}
       {\newunit
        \usebibmacro{cite:article:journal}%
        \setunit{\addspace}%
        \usebibmacro{cite:labeldate+extradate}%
        \newunit
        \usebibmacro{cite:article:pages}}
       {}%
     \ifentrytype{incollection}
       {\setunit{\printdelim{nametitledelim}}%
        \usebibmacro{cite:book:shorttitle}%
        \newunit
        \usebibmacro{cite:article:pages}}
       {}}
    {\usebibmacro{cite:shorthand}}}

\makeatletter

% user-level command for printing tabular bibliography
\let\printbibtabular\printbibliography
\patchcmd{\printbibtabular}{\blx@printbibliography}{\bbx@printbibtabular}{}{}
\patchcmd{\printbibtabular}{\blx@printbibliography}{\bbx@printbibtabular}{}{}
\let\bbx@printbibtabular\blx@printbibliography
\patchcmd{\bbx@printbibtabular}{\blx@bibliography}{\bbx@bibtabular}{}{}
\patchcmd{\bbx@printbibtabular}
  {\def\blx@theenv{bibliography}}{\def\blx@theenv{bibtabular}}{}{}


% underlying macros
\def\bbx@bibtabular#1{%
  \blx@langstrings
  \blx@bibheading\blx@theheading\blx@thetitle
  \blx@bibnote\blx@theprenote
  \begingroup
  \blx@bibinit
  \let\@noitemerr\@empty
  \let\blx@noitem\blx@warn@bibempty
  \ifnum\bibinitsep=\z@
    \let\blx@initsep\relax
  \fi
  \ifnum\bibnamesep=\z@
    \let\blx@namesep\relax
  \fi
  \csuse{blx@hook@bibinit}%
  \csuse{blx@hook@bibinit@next}%
  % copy filtered list of entries to internal list macro
  \def\blx@do##1{%
    \blx@ifdata{##1}{%
      \begingroup
      \blx@getdata{##1}%
      \blx@bibcheck
      \iftoggle{blx@skipentry}{}{%
        \global\let\blx@noitem\@empty
        \listadd\blx@tempa{##1}}%
      \endgroup}{}}%
  \let\blx@done\relax
  \blx@listloop{#1}%
  % tabular output for each item in list macro
  \def\do##1{\bbx@tab@label{##1} & \bbx@tab@item{##1}\\}%
  \csuse{blx@env@\blx@theenv}%
  \dolistloop{\blx@tempa}%
  \csuse{blx@endenv@\blx@theenv}%
  \blx@bibnote\blx@thepostnote
  \endgroup
  \endgroup% this closed a goup opened by \printbibtabular
}

\def\bbx@tab@label#1{%
  \begingroup
  \blx@getdata{#1}%
  \blx@setdefaultrefcontext{#1}%
  \blx@setoptions@type\abx@field@entrytype
  \blx@setoptions@entry
  \blx@thelabelnumber
  \blx@initsep
  \blx@namesep
  \csuse{blx@hook@bibitem}%
  \addtocounter{instcount}\@ne
  \blx@anchor
  \csuse{bbx@tabenv@\blx@theenv}\relax
  \endgroup
}

\def\bbx@tab@item#1{%
  \begingroup
  \blx@getdata{#1}%
  \blx@setoptions@type\abx@field@entrytype
  \blx@setoptions@entry
  \blx@thelabelnumber
  \csuse{blx@hook@bibitem}%
  \csuse{blx@item@\blx@theenv}\relax
  \blx@execute
  \blx@initunit
  \blx@beglangbib
  \bibsentence
  \blx@pagetracker
  \blx@driver\abx@field@entrytype
  \blx@postpunct
  \blx@endlangbib
  \endgroup
}

% user-level command for defining tabular bibliography format
\newrobustcmd*{\defbibtabular}[5]{%
  \long\csdef{blx@env@#1}{#2}%
  \long\csdef{blx@endenv@#1}{#3}%
  \long\csdef{bbx@tabenv@#1}{#4}%
  \long\csdef{blx@item@#1}{#5}}

\makeatother

% sortname labels (a robust style should add provision for missing labelnames)
\newbibmacro*{sortname}{%
  \DeclareDelimFormat{multinamedelim}{\addslash\break}%
  \DeclareDelimAlias{finalnamedelim}{multinamedelim}%
  \printnames[sortname]{labelname}}

% bibitem hook to suppress redundant sortname list
\newbibmacro*{omitsortname}{%
  \ifnameundef{labelname}
    {}
    {\clearname{\thefield{labelnamesource}}}}

\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
% demo new tabular bibliography format
\defbibtabular{bibtabular}
  {\def\arraystretch{1.5}%
   \begin{tabular}{@{}L{\dimexpr0.3\textwidth-\tabcolsep\relax}
                      L{\dimexpr0.7\textwidth-\tabcolsep\relax}@{}}}
  {\end{tabular}}
  {\usebibmacro{sortname}}
  {\usebibmacro{omitsortname}}

% add multiline labels in default bibliography format
\defbibenvironment{bibliography}
  {\list
     {\usebibmacro{sortname}}
     {\setlength{\labelwidth}{0.3\textwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
     \renewcommand*{\makelabel}[1]{%
       \nobreak\strut\smash{\parbox[t]\labelwidth{\raggedright##1}}}}
  {\endlist}
  {\item\usebibmacro{omitsortname}}
  \setlength{\bibitemsep}{\itemsep}%
% ==========================================================
%
\begin{document}
%
% ==========================================================
%\printbibliography[title=Literaturverzeichnis alt,heading=bibintoc]
\printbibtabular[title=Literaturverzeichnis,heading=bibintoc]
\tableofcontents% 
% ==========================================================
Test
\footcite[399]{fs.roxin}\footcite[Wendtland][§ 240 Rn. 63]{beck.ok}\footcite[888]{jus2007.881}
%-----
\end{document}

三个带链接的脚注涵盖了整个引文标签(不包括后注)。1 Beckemper, FS Roxin, 397 (399)。2 BeckOK /Wendtland § 240 Rn. 63。3 Neuner, JuS 2007, 881 (888)。

相关内容