diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex | 436 |
1 files changed, 33 insertions, 403 deletions
diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex b/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex index b5e3d6fc7dc..46b337c3dd1 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex @@ -1,410 +1,49 @@ \documentclass[a4paper]{article} \usepackage{fontspec} -\setmainfont{Linux Libertine O} -\setsansfont{Linux Biolinum O} -\usepackage[fallback]{xeCJK} -%\setCJKmainfont{Malgun Gothic} -\setCJKmainfont{PingFang TC}% OSX - -\usepackage[british]{babel} +\setmainfont{Cambria} +\setsansfont{Arial} +\setmonofont{Courier New} +\usepackage[russian]{babel} \usepackage{csquotes} \usepackage{filecontents} \begin{filecontents}{\jobname.bib} @book{tolstoy, - author = {given=Лев, patronymic=Николаевич, family=Толстой, nametemplates=russian}, - title = {Война и мир}, - date = {1877}, - langid = {russian}, -} -@book{bulgakov, - author = {given=Михаил, patronymic=Афанасьевич, family=Булгаков, nametemplates=russian}, - title = {Мастер и Маргарита}, - date = {1966}, - langid = {russian}, -} -@book{bulgakov:val, - author = {given=Валентин, patronymic=Фёдорович, family=Булгаков, nametemplates=russian}, - title = {Л. Н. Толстой в последний год его жизни}, - date = {1911}, - langid = {russian}, -} - -@book{dosto:1, - author = {given=Александр , patronymic=Андреевич, family=Достоевский, nametemplates=russian}, - title = {О строении телец Грандри}, - date = {1885}, - langid = {russian}, -} -@book{dosto:2, - author = {given=Андрей , patronymic=Андреевич, family=Достоевский, nametemplates=russian}, - title = {П. П. Семенов-Тян-Шанский как исследователь, географ и статистик}, - date = {1914}, - langid = {russian}, -} - -@book{demeke, - author = {given=Kebede, patronymic=Daniel, papponymic=Demeke, nametemplates=ethiopian}, - title = {One}, - date = {1983} -} -@book{dameke, - author = {given=Kebede, patronymic=Daniel, papponymic=Dameke, nametemplates=ethiopian}, - title = {Two}, - date = {1983} -} -@book{james, - author = {given=Kebede, patronymic=James, papponymic=Demeke, nametemplates=ethiopian}, - title = {Three}, - date = {1983} -} -@book{jonathan, - author = {given=Kebede, patronymic=Jonathan, papponymic=Kebede, nametemplates=ethiopian}, - title = {Four}, - date = {1986} -} -@book{william, - author = {given=Kebede, patronymic=William, papponymic=Kebede, nametemplates=ethiopian}, - title = {Four}, - date = {1987} -} - -@book{zhangx1, - title = {Shuming}, - titleaddon = {書名}, - author = {family=Zhang, cjk=章學成, given=Xuecheng, nametemplates=cjk}, - location = {Beijing}, - publisher = {Zhonghua Shuju}, - date = {2017}, -} -@book{zhangx2, - title = {Shuming er}, - titleaddon = {書名二}, - author = {family=Zhang, cjk=張學成, given=Xuecheng, nametemplates=cjk}, - location = {Shanghai}, - publisher = {Shangwu Yinshuguan}, - date = {2016}, -} -@book{zhangh, - title = {Sŏmyŏng}, - titleaddon = {書名}, - author = {family=Zhang, cjk=장학성, given=Haksŏng, nametemplates=cjk}, - location = {Shanghai}, - publisher = {Shangwu Yinshuguan}, - date = {2016}, -} - -@book{bronte:c, - author = {Charlotte Brontë}, - date = {1847}, - title = {Jane Eyre}, -} -@book{bronte:e, - author = {Emily Brontë}, - date = {1847}, - title = {Wuthering Heights}, -} - -@book{austen:jane, - author = {Jane Austen}, - date = {1813}, - title = {Pride and Prejudice}, -} -@collection{austen:john, - editor = {John Austen}, - editortype = {compiler}, - date = {1924}, - title = {Rogues in Porcelain: A Miscellany of 18th Poems}, + author = {given=Лев, patronymic=Николаевич, family=Толстой}, + title = {Война и мир}, + date = {1877} } \end{filecontents} -\usepackage[style=authoryear,datamodel=93-nameparts,backend=biber, autolang=hyphen]{biblatex} -\addbibresource{biblatex-examples.bib} +\usepackage[style=authoryear,datamodel=93-nameparts,backend=biber]{biblatex} +\addbibresource[datatype=biblatexml]{biblatex-examples.bltxml} \addbibresource{\jobname.bib} - -% Use transliteration to sort Cyrillic among Latin script -\DeclareSortTranslit{ - \translit{russian}{bgn/pcgn-standard} -} - -\makeatletter -%% CJK names -% the idea is to sort family -> given -> cjk (full name) -% and disambiguate in the same manner using only full -% forms of the name, no initials -% the order should always be family -> given -> cjk -% names are not reversed -\DeclareSortingNamekeyTemplate[cjk]{ - \keypart{ - \namepart{family} - } - \keypart{ - \namepart{given} - } - \keypart{ - \namepart{cjk} - } -} - -\DeclareUniquenameTemplate[cjk]{ - \namepart[base=true]{family} - \namepart[disambiguation=full]{given} - \namepart[disambiguation=full]{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}}} - -%% Ethiopian names -% Ethiopian names are given -> patronymic -> papponymic -% the latter two are only needed for disambiguation -% names order is never reversed -\DeclareSortingNamekeyTemplate[ethiopian]{ - \keypart{ - \namepart{given} - } +% A format using the new name part +\DeclareNameFormat{author}{% + \usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \mkbibnamefamily{\namepartfamily}% + \ifdefvoid\namepartgiven + {} + {\revsdnamepunct + \bibnamedelimd + \mkbibnamegiven{\namepartgiven}% + \space + \mkbibnamepatronymic{\namepartpatronymic}\isdot} + \usebibmacro{name:andothers}} + +% We want to sort names using these name parts in this order +\DeclareSortingNamekeyScheme{ \keypart{ \namepart{patronymic} } \keypart{ - \namepart{papponymic} - } -} - -\DeclareUniquenameTemplate[ethiopian]{ - \namepart[base=true]{given} - \namepart[disambiguation=full]{patronymic} - \namepart[disambiguation=full]{papponymic} -} - -\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}} - -\let\mkbibethgiven\mkbibnamefamily -\let\mkbibethpat\mkbibnamegiven -\let\mkbibethpap\mkbibnamegiven - -%% Russian names -% family -> given -> patronymic -% we never show the given name alone, it is always accompanied -% by the patronymic -% (patronymic could just be treated as another given name) -% reversed name order is 'family, given patronymic' -\DeclareSortingNamekeyTemplate[russian]{ - \keypart{ \namepart{family} } \keypart{ \namepart{given} } - \keypart{ - \namepart{patronymic} - } -} - -\DeclareUniquenameTemplate[russian]{ - \namepart[base=true]{family} - \namepart{given} - \namepart{patronymic} } -\newbibmacro*{name:russian}[3]{% - \usebibmacro{name:delim}{#1#2#3}% - \usebibmacro{name:hook}{#1#2#3}% - \ifdefvoid{#2} - {} - {\mkbibnamegiven{#2}\isdot\bibnamedelimd - \ifdefvoid{#3} - {} - {\mkbibnamepatronymic{#3}\isdot\bibnamedelimd}}% - \mkbibnamefamily{#1}} - -\newbibmacro*{name:russian-rev}[3]{% - \usebibmacro{name:delim}{#1#2#3}% - \usebibmacro{name:hook}{#1#2#3}% - \mkbibnamefamily{#1}% - \ifdefvoid{#2} - {} - {\revsdnamepunct\bibnamedelimd - \mkbibnamegiven{#2}\isdot - \ifdefvoid{#3} - {} - {\bibnamedelimd\mkbibnamepatronymic{#3}\isdot}}} - -%% sortname -% helper to select the sorting template in \ifcase -\newcommand*{\abx@sortingnamekeytemplate}{0} -\newcommand*{\abx@getsortingnamekeytemplate}{% - \ifsortingnamekeytemplatename{cjk} - {\def\abx@sortingnamekeytemplate{1}} - {\ifsortingnamekeytemplatename{ethiopian} - {\def\abx@sortingnamekeytemplate{2}} - {\ifsortingnamekeytemplatename{russian} - {\def\abx@sortingnamekeytemplate{3}} - {}}}} - -% show fullest version of names, -% reverse Russian and western names for sorting -% all other names are always in the correct order for sorting -\DeclareNameFormat{sortname}{% - \abx@getsortingnamekeytemplate - \ifcase\abx@sortingnamekeytemplate\relax - \usebibmacro{name:family-given} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}% - \or - \usebibmacro{name:cjk} - {\namepartfamily} - {\namepartgiven} - {\namepartcjk}% - \or - \usebibmacro{name:ethiopian} - {\namepartgiven} - {\namepartpatronymic} - {\namepartpapponymic}% - \or - \usebibmacro{name:russian-rev} - {\namepartfamily} - {\namepartgiven} - {\namepartpatronymic}% - \fi - \usebibmacro{name:andothers}} - -%% labelname -% copy of the standard definition in biblatex.def -% uses the 'old way' of finding the disambiguating name part -\newbibmacro{labelname:western}{% - \ifcase\value{uniquename}% - \usebibmacro{name:family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}% - \or - \ifuseprefix - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefix} - {\namepartsuffixi}} - {\usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiveni} - {\namepartprefixi} - {\namepartsuffixi}}% - \or - \usebibmacro{name:given-family} - {\namepartfamily} - {\namepartgiven} - {\namepartprefix} - {\namepartsuffix}% - \fi - \usebibmacro{name:andothers}} - -% Uses \iffieldequalstr{uniquepart} to find the disambiguating -% name part. -% If neither base (i.e. family) nor given name are enough, -% go with the full name. -% Uses \empty for suppressed name parts, so we don't have to define -% dedicated macros for the shorter name forms. -\newbibmacro{labelname:cjk}{% - \iffieldequalstr{uniquepart}{base}% - {\usebibmacro{name:cjk} - {\namepartfamily} - {\empty} - {\empty}} - {\iffieldequalstr{uniquepart}{given}% - {\usebibmacro{name:cjk} - {\namepartfamily} - {\namepartgiven} - {\empty}} - {\usebibmacro{name:cjk} - {\namepartfamily} - {\namepartgiven} - {\namepartcjk}}}} - -% similar to the CJK format -\newbibmacro{labelname:ethiopian}{% - \iffieldequalstr{uniquepart}{base}% - {\usebibmacro{name:ethiopian} - {\namepartgiven} - {\empty} - {\empty}} - {\iffieldequalstr{uniquepart}{patronymic}% - {\usebibmacro{name:ethiopian} - {\namepartgiven} - {\namepartpatronymic} - {\empty}} - {\usebibmacro{name:ethiopian} - {\namepartgiven} - {\namepartpatronymic} - {\namepartpapponymic}}}} - -% Uses \iffieldequalstr{uniquepart} to get the disambiguating -% name part. -% We only choose between 'Given Patronymic Family' and -% 'G. P. Family', the decision whether or not to use -% initials is for the given name to decide. -% If the given initial is enough to disambiguate the name, -% the given name and patronymic become initials. -% Even if the initial of the patronymic would make the name -% unique we go with the full name instead. -% There is no 'Given P. Family' format. -% \namepart<>un=1 says initials are enough -% 2 means the full name is required -% 0 means not used -\newbibmacro{labelname:russian}{% - \iffieldequalstr{uniquepart}{base}% - {\usebibmacro{name:russian} - {\namepartfamily} - {\empty} - {\empty}} - {\ifnum\namepartgivenun=1\relax - \usebibmacro{name:russian} - {\namepartfamily} - {\namepartgiveni} - {\namepartpatronymici}% - \else - \usebibmacro{name:russian} - {\namepartfamily} - {\namepartgiven} - {\namepartpatronymic}% - \fi}} - -% helper to select the uniquename template in \ifcase -\newcommand*{\abx@uniquenametemplatename}{0} -\newcommand*{\abx@getuniquenametemplatename}{% - \ifuniquenametemplatename{cjk} - {\def\abx@uniquenametemplatename{1}} - {\ifuniquenametemplatename{ethiopian} - {\def\abx@uniquenametemplatename{2}} - {\ifuniquenametemplatename{russian} - {\def\abx@uniquenametemplatename{3}} - {}}}} - -\DeclareNameFormat{labelname}{% - \abx@getuniquenametemplatename - \ifcase\abx@uniquenametemplatename\relax - \usebibmacro{labelname:western}% - \or - \usebibmacro{labelname:cjk}% - \or - \usebibmacro{labelname:ethiopian}% - \or - \usebibmacro{labelname:russian}% - \fi - \usebibmacro{name:andothers}} -\makeatother - \begin{document} % Historically, name handling in latex bibliographies has been determined by % the name parsing rules of bibtex. In a modern context, this name handling @@ -414,26 +53,17 @@ % it is possible to define arbitrary name parts since the allowable name % parts are defined in the data model (see accompanying file 93-nameparts.dbx). -% Here we demonstrate the possibility of adding a new name parts to the -% datamodel and then using it in formatting, sorting etc. -% Notice that we can use the new name part types in the datasource +% Here we demonstrate the possibility of adding a new "patronymic" name part to the +% datamodel and then using it in formatting, sorting etc. It requires +% the biblatexml datasource format (see accompanying file biblatex-examples.bltxml) + +% Notice that we can use the <patronymic> name part type in the datasource % which is now allowable due to the enhanced datamodel constant definition. % We have also defined a new name format and method of sorting names which -% are aware of the new name parts. +% are aware of the new name part. % -\textcite{tolstoy,bulgakov,bulgakov:val} - -\textcite{dosto:1} - -\textcite{dosto:2} - -\textcite{demeke,dameke,james,jonathan,william} - -\textcite{sigfridsson,worman,geer,knuth:ct:a,cicero,companion,vangennep} - -\textcite{bronte:c,bronte:e,austen:jane,austen:john} - -\textcite{zhangx1,zhangx2,zhangh} +\noindent\textcite{tolstoy}\\ +\textcite{bulgakov} \printbibliography \end{document} |