summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex
diff options
context:
space:
mode:
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.tex436
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}