Was machen Name:Delim und Name:Hook in Biblatex?

Was machen Name:Delim und Name:Hook in Biblatex?

Die name:delimMakros name:hookscheinen auf niedriger Ebene zu sein und nehmen jeweils nur ein Argument an, das normalerweise eine Kombination aus nameparts ist. Und doch achtet Moewe darauf, sie auf unterschiedliche Weise zu kombinieren.

Hier ist ein Standardschema für die Namensanzeige inbiblatex.def

\newbibmacro*{name:family}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \mkbibcompletenamefamily{%
       \ifdefvoid{#3}
         {}
         {\ifcapital
            {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
            {\mkbibnameprefix{#3}\isdot}%
          \ifprefchar{}{\bibnamedelimc}}%
       \mkbibnamefamily{#1}\isdot}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \mkbibcompletenamefamily{%
       \mkbibnamefamily{#1}\isdot}}}%

Hier sind seine maßgeschneiderten Lösungen für die AnzeigeÄthiopische Namen

\newbibmacro*{name:ethiopian}[3]{%
  \usebibmacro{name:delim}{#1#2#3}%
  \usebibmacro{name:hook}{#1#2#3}%
  \mkbibethgiven{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibethpat{#2}\isdot}%
  \ifdefvoid{#3}{}{\bibnamedelimd\mkbibethpap{#3}\isdot}}

UndCJK-Namen

\newbibmacro*{name:cjk}[3]{%
  \usebibmacro{name:delim}{#2#3#1}%
  \usebibmacro{name:hook}{#2#3#1}%
  \mkbibnamefamily{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}}%
  \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnamecjk{#3}}}

Es gibt offensichtlich ein Muster, aber ich sehe nicht, dass es die sichtbare Ausgabe beeinflusst. Daher möchte ich wissen, wie viel Aufmerksamkeit ich dem schenken sollte, wenn ich versuche, eine eigene benutzerdefinierte Namensanzeige zusammenzuschustern.

Ausbiblatex.def:

\newbibmacro*{name:hook}[1]{%
  \ifnumequal{\value{listcount}}{1}
    {\lbx@initnamehook{#1}}
    {}}


\newbibmacro*{name:delim}[1]{%
  \ifnumgreater{\value{listcount}}{\value{liststart}}
    {\ifboolexpr{
       test {\ifnumless{\value{listcount}}{\value{liststop}}}
       or
       test \ifmorenames
     }
       {\printdelim{multinamedelim}}
       {\lbx@finalnamedelim{#1}}}
    {}}

Antwort1

name:delimsetzt das Trennzeichen zwischen verschiedenen Namen. Normalerweise ( multinamedelim) ist dies ein Komma oder ein ähnliches langweiliges Satzzeichen, aber das letzte Trennzeichen kann ein spezielles ( finalnamedelim) sein, z. B. ist es manchmal ein „und“. In einigen Sprachen finalnamedelimkann das („und“) seine Form je nach folgendem Wort/Namen ändern (im Spanischen muss man zwischen „y“ und „e“ wechseln). Deshalb name:delimerhält why einige Informationen über den Namen, damit es die Form des „und“ bestimmen kann. Im Allgemeinen sollte die Reihenfolge der Argumente im Argument von name:delimder Reihenfolge der Namensteile folgen, wie sie vom entsprechenden Bibmakro gedruckt werden. (Dies traf auf den äthiopischen Fall zu, aber nicht auf das CJK-Makro. Ich habe das im verlinkten Beitrag geändert.)

name:hookhat eine ähnliche Rolle. Aber es gilt nur für den Vornamen. Es ist relevant für Dinge wiebearbeitet vonauf Französisch, wo dievonwäredeoderD'abhängig vom Namen.


Sofern Sie keine Sprache verwenden, in der Wörter je nach Folge geändert werden müssen (und diese Änderung durch implementiert wird biblatex), werden Sie keinen Unterschied in Ihren Namensformaten feststellen, wenn Sie die Argumente nicht in „der richtigen Reihenfolge“ eingeben.

Als allgemeine Faustregel gilt, dass die name:delimNamensteilargumente name:hookin derselben Reihenfolge eingegeben werden sollten, in der sie vom Makro gedruckt werden.

verwandte Informationen