![biblatex で name:delim と name:hook は何をしますか?](https://rvso.com/image/476235/biblatex%20%E3%81%A7%20name%3Adelim%20%E3%81%A8%20name%3Ahook%20%E3%81%AF%E4%BD%95%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
areマクロname:delim
はname:hook
低レベルのようで、それぞれが 1 つの引数のみを取り、通常は複数の引数の組み合わせになりますnamepart
。しかし、Moewe はそれらをさまざまな方法で組み合わせるように注意しています。
標準的な名前表示方式は次のとおりです。biblatex.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}}}%
ディスプレイ用のカスタムソリューションはこちらエチオピアの名前
\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}}
そしてCJK 名
\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}}}
明らかにパターンはありますが、それが目に見える出力に影響を与えるとは思えません。そのため、独自のカスタム名表示をまとめようとするときに、これにどの程度注意を払う必要があるかを知りたいです。
からbiblatex.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}}}
{}}
答え1
name:delim
異なる名前の間の区切り文字をタイプセットします。通常 ( multinamedelim
) はカンマまたはそのような退屈な句読点ですが、最後の区切り文字は特別な ( finalnamedelim
) になることがあります。たとえば、"and" の場合もあります。言語によっては、finalnamedelim
("and") は後に続く単語/名前に応じて形式が変わる場合があります (スペイン語では "y" と "e" を切り替える必要があります)。そのため、 にはname:delim
名前に関する情報が与えられ、"and" の形式を決定できます。一般的に、 の引数の順序は、name:delim
関連する bibmacro によって印刷される名前部分の順序に従う必要があります。(これはエチオピアの場合には当てはまりましたが、CJK マクロには当てはまりませんでした。リンクされた投稿でこれを変更しました。)
name:hook
同様の役割があります。しかし、これはファーストネームにのみ適用されます。次のような場合に関係します。によって編集フランス語では、によるだろうデまたはd'名前によって異なります。
後続の内容に応じて単語を変更する必要がある言語 (およびその変更が によって実装されているbiblatex
) を使用しない限り、引数を「正しい順序」で入力しなくても、名前の形式に違いは見られません。
一般的な経験則としては、name:delim
マクロname:hook
によって印刷されるのと同じ順序で、名前部分の引数を入力する必要があります。