mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
Extend and improve name list handling
This allows to generate different name lists depending on the need and context. Also addresses #8489.
This commit is contained in:
parent
322808281f
commit
a751c5b846
@ -162,7 +162,11 @@ CiteFormat default
|
||||
!smartsep {%second%[[{%next%[[%_namesep%]][[%_pairnamesep%]]}]][[{%next%[[%_namesep%]][[%_lastnamesep%]]}]]}
|
||||
|
||||
# "Author et al." or "??"
|
||||
!abbrvauthor {%abbrvauthor%[[%abbrvauthor%]][[??]]}
|
||||
!abbrvciteauthor {%abbrvciteauthor%[[%abbrvciteauthor%]][[??]]}
|
||||
# "Author, ..." or "??"
|
||||
!fullciteauthor {%fullciteauthor%[[%fullciteauthor%]][[??]]}
|
||||
# Handle starred command: abbr. or full author list
|
||||
!makeauthor {%ifstar%[[%!fullciteauthor%]][[%!abbrvciteauthor%]]}
|
||||
# "prenote "
|
||||
!textbefore {%textbefore%[[%textbefore% ]]}
|
||||
# ", postnote"
|
||||
@ -181,7 +185,7 @@ CiteFormat default
|
||||
!fullcite %bibentry%%!nextfullcite%
|
||||
|
||||
# "...; Author..."
|
||||
!nextauthor {%next%[[%!sep% %!startlink%%!abbrvauthor%%!endlink%%!nextauthor%]]}
|
||||
!nextauthor {%next%[[%!sep% %!startlink%%!makeauthor%%!endlink%%!nextauthor%]]}
|
||||
# "..., CiteKey..."
|
||||
!nextkey {%next%[[%!sep% %key%%!nextkey%]]}
|
||||
# ".., Year..." (including extra label, as in 2017a)
|
||||
@ -202,7 +206,7 @@ CiteFormat default
|
||||
#
|
||||
|
||||
# "cf. Author; NextAuthor, p. xx"
|
||||
citeauthor %!textbefore%%!startlink%%!abbrvauthor%%!endlink%%!nextauthor%%!textafter%
|
||||
citeauthor %!textbefore%%!startlink%%!makeauthor%%!endlink%%!nextauthor%%!textafter%
|
||||
# "cf. Year; NextYear, S. xx" [Authoryear] / "cf. Year, NextYear, S. xx" [Numerical]
|
||||
citeyear %!textbefore%%!startlink%%!myear%%!endlink%%!nextmyear%%!textafter%
|
||||
# "cf. Year; Nextyear, p. xx" (without any extra label)
|
||||
@ -228,16 +232,16 @@ CiteFormat authoryear
|
||||
!close )
|
||||
|
||||
# "Author et al. (cf. Year..."
|
||||
!makecitet %!startlink%%!abbrvauthor%%!endlink% %!open%%!textbefore%%!makeyear%%!nextcitet%
|
||||
!makecitet %!startlink%%!makeauthor%%!endlink% %!open%%!textbefore%%!makeyear%%!nextcitet%
|
||||
# "cf. Author et al. Year..."
|
||||
!makecitealt %!textbefore%%!startlink%%!abbrvauthor% %!makeyear%%!endlink%%!nextcitealt%
|
||||
!makecitealt %!textbefore%%!startlink%%!makeauthor% %!makeyear%%!endlink%%!nextcitealt%
|
||||
# "Author et al., Year..."
|
||||
!makecitealp %!startlink%%!abbrvauthor%, %!makeyear%%!endlink%%!nextcitealp%
|
||||
!makecitealp %!startlink%%!makeauthor%, %!makeyear%%!endlink%%!nextcitealp%
|
||||
|
||||
# "...), [and] Nextauthor (Year..."
|
||||
!nextcitet {%next%[[%!close%%!smartsep%%!startlink%%!abbrvauthor%%!endlink% %!open%%!makeyear%%!nextcitet%]]}
|
||||
!nextcitet {%next%[[%!close%%!smartsep%%!startlink%%!makeauthor%%!endlink% %!open%%!makeyear%%!nextcitet%]]}
|
||||
# "...; NextAuthor et al. Year..."
|
||||
!nextcitealt {%next%[[%!sep% %!startlink%%!abbrvauthor% %!makeyear%%!endlink%%!nextcitealt%]]}
|
||||
!nextcitealt {%next%[[%!sep% %!startlink%%!makeauthor% %!makeyear%%!endlink%%!nextcitealt%]]}
|
||||
# "...; NextAuthor et al., Year..."
|
||||
!nextcitealp {%next%[[%!sep% %!makecitealp%]]}
|
||||
|
||||
@ -281,14 +285,14 @@ CiteFormat numerical
|
||||
!close ]
|
||||
|
||||
# "Author [cf. ID..."
|
||||
!makecitet %!abbrvauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet%
|
||||
!makecitet %!makeauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet%
|
||||
# "ID..."
|
||||
!makecitealt {%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitealt%
|
||||
# "ID..."
|
||||
!hashkey {%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%%!nexthashkey%]]}
|
||||
|
||||
# "...], [and] NextAuthor [ID..."
|
||||
!nextcitet {%next%[[%!close%%!smartsep%%!abbrvauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet%]]}
|
||||
!nextcitet {%next%[[%!close%%!smartsep%%!makeauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet%]]}
|
||||
# "..., ID..."
|
||||
!nextcitealt {%next%[[%!sep% %!makecitealt%]]}
|
||||
# FIXME: What is this?
|
||||
@ -296,7 +300,7 @@ CiteFormat numerical
|
||||
# "..., NextID..."
|
||||
!nexthashkey {%next%[[%!sep% %!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%%!nexthashkey%]]}
|
||||
# "...); Nextauthor [ID..."
|
||||
!nextcitet {%next%[[%!close%%!smartsep%%!abbrvauthor% %!open%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet%]]}
|
||||
!nextcitet {%next%[[%!close%%!smartsep%%!makeauthor% %!open%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet%]]}
|
||||
|
||||
#
|
||||
# ACTUAL STYLE DEFINITIONS
|
||||
|
@ -150,7 +150,7 @@ CiteFormat default
|
||||
!dummymod [a]
|
||||
|
||||
# "...; Nextauthor ..."
|
||||
!nextauthor {%next%[[%!sep% %!startlink%%!abbrvauthor%%!endlink%%!nextauthor%]]}
|
||||
!nextauthor {%next%[[%!sep% %!startlink%%!abbrvciteauthor%%!endlink%%!nextauthor%]]}
|
||||
# Handle starred command: abbr. or full author list
|
||||
!makenextauthor {%next%[[%!sep% %!startlink%%!makeauthor%%!endlink%%!makenextauthor%]]}
|
||||
# "...; [NextID] ..."
|
||||
@ -167,11 +167,11 @@ CiteFormat default
|
||||
!nextfullcite {%next%[[%!sep% %bibentry%%!nextfullcite%]]}
|
||||
|
||||
# "Author et al." (if > 3 authors) or "??"
|
||||
!abbrvauthor {%abbrvauthor%[[%abbrvauthor%]][[??]]}
|
||||
!abbrvciteauthor {%abbrvciteauthor%[[%abbrvciteauthor%]][[??]]}
|
||||
# "Author et al." (always) or "??"
|
||||
!forceabbrvauthor {%forceabbrvauthor%[[%forceabbrvauthor%]][[??]]}
|
||||
!forceabbrvciteauthor {%forceabbrvciteauthor%[[%forceabbrvciteauthor%]][[??]]}
|
||||
# Handle starred command: force of abbr. author list, independent of maxcitenames
|
||||
!makeauthor {%ifstar%[[%!forceabbrvauthor%]][[%!abbrvauthor%]]}
|
||||
!makeauthor {%ifstar%[[%!forceabbrvciteauthor%]][[%!abbrvciteauthor%]]}
|
||||
# "prenote "
|
||||
!textbefore {%textbefore%[[%textbefore% ]]}
|
||||
# ", postnote"
|
||||
@ -220,14 +220,14 @@ CiteFormat authoryear
|
||||
!close )
|
||||
|
||||
# "cf. Author et. al Year..."
|
||||
!makecite %!startlink%%!abbrvauthor% %!year%%!endlink%%!nextcite%
|
||||
!makecite %!startlink%%!abbrvciteauthor% %!year%%!endlink%%!nextcite%
|
||||
# Author et al. (cf. Year...
|
||||
!maketextcite %!startlink%%!abbrvauthor%%!endlink% %!open%%!textbefore%%!year%%!nexttextcite%
|
||||
!maketextcite %!startlink%%!abbrvciteauthor%%!endlink% %!open%%!textbefore%%!year%%!nexttextcite%
|
||||
|
||||
# "...; Nextauthor Year..."
|
||||
!nextcite {%next%[[%!sep% %!makecite%]]}
|
||||
# "...); Nextauthor (Year..."
|
||||
!nexttextcite {%next%[[%!close%%!smartsep%%!startlink%%!abbrvauthor%%!endlink% %!open%%!year%%!nexttextcite%]]}
|
||||
!nexttextcite {%next%[[%!close%%!smartsep%%!startlink%%!abbrvciteauthor%%!endlink% %!open%%!year%%!nexttextcite%]]}
|
||||
|
||||
# Add a year if it exists (else title, else "??") and possibly a modifier (as in 2017a)
|
||||
!yeartitle {%year%[[%year%{%modifier%[[%modifier%]][[{%export%[[]][[%!dummymod%]]}]]}]][[{%title%[[%title%]][[??]]}]]}
|
||||
@ -273,12 +273,12 @@ CiteFormat numerical
|
||||
!close ]
|
||||
|
||||
# "Author [cf. ID..."
|
||||
!maketextcite %!abbrvauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nexttextcite%
|
||||
!maketextcite %!abbrvciteauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nexttextcite%
|
||||
# "ID"
|
||||
!makekey {%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%%!nextkey%]]}
|
||||
|
||||
# "...); Nextauthor [ID..."
|
||||
!nexttextcite {%next%[[%!close%%!smartsep%%!abbrvauthor% %!open%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nexttextcite%]]}
|
||||
!nexttextcite {%next%[[%!close%%!smartsep%%!abbrvciteauthor% %!open%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nexttextcite%]]}
|
||||
# "..., NextID..."
|
||||
!nextkey {%next%[[%!sep% %!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%%!nextkey%]]}
|
||||
|
||||
|
@ -137,7 +137,7 @@ CiteFormat authoryear
|
||||
!endlink {!</a>!}
|
||||
|
||||
# "ShortAuthor", "Author" or "??"
|
||||
!shortauthor {%shortauthor%[[%shortauthor%]][[{%abbrvauthor%[[%abbrvauthor%]][[??]]}]]}
|
||||
!shortauthor {%shortauthor%[[%shortauthor%]][[{%abbrvciteauthor%[[%abbrvciteauthor%]][[??]]}]]}
|
||||
# "... ShortTitle"
|
||||
!shorttitle {%shorttitle%[[ %shorttitle%]][[{%dialog%[[ <%_shorttitle%>]][[%!makejurashorttitle%]]}]]}
|
||||
# Title or "??"
|
||||
|
@ -124,11 +124,11 @@ CiteFormat default
|
||||
!endlink {!</a>!}
|
||||
|
||||
# "Author et al." or "??"
|
||||
!abbrvauthor {%abbrvauthor%[[%abbrvauthor%]][[??]]}
|
||||
!abbrvciteauthor {%abbrvciteauthor%[[%abbrvciteauthor%]][[??]]}
|
||||
# "Author, ..." or "??"
|
||||
!fullauthor {%fullauthor%[[%fullauthor%]][[??]]}
|
||||
!fullciteauthor {%fullciteauthor%[[%fullciteauthor%]][[??]]}
|
||||
# Handle starred command: abbr. or full author list
|
||||
!makeauthor {%ifstar%[[%!fullauthor%]][[%!abbrvauthor%]]}
|
||||
!makeauthor {%ifstar%[[%!fullciteauthor%]][[%!abbrvciteauthor%]]}
|
||||
# "prenote "
|
||||
!textbefore {%textbefore%[[%textbefore% ]]}
|
||||
# ", postnote"
|
||||
|
@ -22322,7 +22322,7 @@ cite*
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483868404
|
||||
\change_inserted -712698321 1483978485
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
@ -22358,7 +22358,7 @@ status collapsed
|
||||
|
||||
, else the false part (e.g., in a citation definition:
|
||||
\begin_inset Flex Code
|
||||
status open
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
@ -22371,6 +22371,600 @@ status open
|
||||
\end_inset
|
||||
|
||||
)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483978548
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483978499
|
||||
{%ifmultiple:<authortype>%[[true]][[false]]}
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: process the
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
true
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
if the current author type (author, editor etc.) has multiple authors, else
|
||||
the false part (e.g., in a bibliography definition:
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483978571
|
||||
{%ifmultiple:editor%[[eds.]][[ed.]]}
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
)
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
|
||||
\change_inserted -712698321 1483978958
|
||||
We said that
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483978693
|
||||
%author%
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
prints the author key as it is recorded in the bibliography file.
|
||||
This might not be what you want, since it will result in a string such
|
||||
as
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
Miller, Peter and Smith, Mary and White, Jane
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
(since
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
and
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
is used by Bib\SpecialChar TeX
|
||||
to delimit authors).
|
||||
\SpecialChar LyX
|
||||
therefore provides some methods to get properly formatted name lists (which
|
||||
will also get translated).
|
||||
The following keys are provided:
|
||||
\end_layout
|
||||
|
||||
\begin_layout Enumerate
|
||||
|
||||
\change_inserted -712698321 1483979807
|
||||
For name lists with pre- and surname, suitable for the main authors/editors
|
||||
of a bibliography item.
|
||||
The
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979800
|
||||
<nametype>
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
part denotes the kind of list that is requested (e.g.
|
||||
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979807
|
||||
<nametype:author>
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
):
|
||||
\end_layout
|
||||
|
||||
\begin_deeper
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483979186
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979743
|
||||
%abbrvnames:<nametype>%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a name list which is abbreviated (with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
) when
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979186
|
||||
MaxCiteNames
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
is reached.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483979527
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979748
|
||||
%fullnames:<nametype>%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a full name list (never abbreviated with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
).
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483979553
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483980138
|
||||
%forceabbrvnames:<nametype>%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a name list which is always abbreviated (with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
) irrespective of
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979535
|
||||
MaxCiteNames
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
.
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_deeper
|
||||
\begin_layout Enumerate
|
||||
|
||||
\change_inserted -712698321 1483979413
|
||||
Alternative name lists with pre- and surname, if the order of pre- and surname
|
||||
inside the bibliography item differs (as in:
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
Miller, John: Some text, in: Mary Smith, ed.: A volume
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
):
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_deeper
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483979565
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979751
|
||||
%abbrvbynames:<nametype>%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a name list which is abbreviated (with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
) when
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979565
|
||||
MaxCiteNames
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
is reached.
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483979570
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979753
|
||||
%fullbynames:<nametype>%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a full name list (never abbreviated with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
).
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483979576
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483980143
|
||||
%forceabbrvbynames:<nametype>%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a name list which is always abbreviated (with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
) irrespective of
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979574
|
||||
MaxCiteNames
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
.
|
||||
\end_layout
|
||||
|
||||
\end_deeper
|
||||
\begin_layout Enumerate
|
||||
|
||||
\change_inserted -712698321 1483980219
|
||||
And finally name lists which consist of family names only, as used in author-yea
|
||||
r citation labels.
|
||||
these do not take a
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979871
|
||||
<nametype>
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
part, but always return either an author list or, if this does not exist,
|
||||
an editor list (as common in author-year labels):
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_deeper
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483979715
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979700
|
||||
%abbrvciteauthor%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a name list which is abbreviated (with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
) when
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979715
|
||||
MaxCiteNames
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
is reached.
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483979721
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979703
|
||||
%fullciteauthor%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a full name list (never abbreviated with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
).
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483980272
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979705
|
||||
%forceabbrvciteauthor%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
: Provides a name list which is always abbreviated (with
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
et al.
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
) irrespective of
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483979726
|
||||
MaxCiteNames
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
.
|
||||
\end_layout
|
||||
|
||||
\end_deeper
|
||||
\begin_layout Standard
|
||||
|
||||
\change_inserted -712698321 1483980314
|
||||
The order of pre- and surname in the former two lists can be adjusted by
|
||||
these macros:
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483980535
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483980354
|
||||
!firstnameform %surname%, %prename%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
(first author in lists of type 1)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483980557
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483980367
|
||||
!othernameform %surname%, %prename%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
(other authors in lists of type 1)
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483980550
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483980373
|
||||
!firstbynameform %prename% %surname%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
(first author in lists of type 2)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
|
||||
\change_inserted -712698321 1483980570
|
||||
\begin_inset Flex Code
|
||||
status collapsed
|
||||
|
||||
\begin_layout Plain Layout
|
||||
|
||||
\change_inserted -712698321 1483980381
|
||||
!otherbynameform %prename% %surname%
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
||||
\end_inset
|
||||
|
||||
(other authors in lists of type 2)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
|
||||
\change_inserted -712698321 1483980643
|
||||
This allows you to configure namings like
|
||||
\begin_inset Quotes eld
|
||||
\end_inset
|
||||
|
||||
Miller, Peter and Mary Smith: \SpecialChar ldots
|
||||
, in: John Doe and Pat Green, eds.:\SpecialChar ldots
|
||||
|
||||
\begin_inset Quotes erd
|
||||
\end_inset
|
||||
|
||||
.
|
||||
\change_unchanged
|
||||
|
||||
\end_layout
|
||||
|
@ -1,31 +1,55 @@
|
||||
# Standard formats for citations.
|
||||
#
|
||||
# Author: Richard Heck <rgheck@comcast.net>
|
||||
# Jürgen Spitzmüller <spitz@lyx.org>
|
||||
|
||||
Format 63
|
||||
|
||||
CiteFormat default
|
||||
# translatable bits
|
||||
#
|
||||
# Translatable bits
|
||||
#
|
||||
_pptext pp.
|
||||
_edtext ed.
|
||||
_edstext eds.
|
||||
_voltext vol.
|
||||
_numtext no.
|
||||
_in in
|
||||
# The following are handled by BiblioInfo. Note that preceding and trailing spaces matter
|
||||
_namesep , [[separate author names in citation, except for last name]]
|
||||
_lastnamesep , and [[separate name of last author in citation]]
|
||||
_pairnamesep and [[separate two authors in citation]]
|
||||
|
||||
#
|
||||
# Macros
|
||||
#
|
||||
# Scheme of the first author in the bibliography
|
||||
!firstnameform %surname%, %prename%
|
||||
# Scheme of other authors in the bibliography
|
||||
!othernameform %surname%, %prename%
|
||||
# Scheme of the first name in later parts (such as book editor)
|
||||
!firstbynameform %prename% %surname%
|
||||
# Scheme of other authors in later parts (such as book editor)
|
||||
!otherbynameform %prename% %surname%
|
||||
# pagination
|
||||
!pages {%pages%[[, %_pptext% %pages%]]}
|
||||
!authoredit {%author%[[%author%, ]][[{%editor%[[%editor%, %_edtext%, ]]}]]}
|
||||
# ed. or eds.
|
||||
!makeed {%ifmultiple:editor%[[%_edstext%]][[%_edtext%]]}
|
||||
# author or editor, as fullnames, following the schemes above
|
||||
!authoredit {%fullnames:author%[[%fullnames:author%, ]][[{%fullnames:editor%[[%fullnames:editor%, %!makeed%, ]]}]]}
|
||||
# "vol. 1, no.
|
||||
!volnum {%volume%[[ %_voltext% %volume%, {%number%[[%_numtext% %number%]]}]]}
|
||||
!quotetitle "%title%"
|
||||
!emphtitle {!<i>!}%title%{!</i>!}
|
||||
!emphjournal {!<i>!}{%journal%[[%journal%]][[{%journaltitle%[[%journaltitle%]]}]]}{!</i>!}
|
||||
!location {%address%[[%address%: ]][[{%location%[[%location%: ]]}]]}
|
||||
|
||||
#
|
||||
# Entry types. Note that final punctuation will be added later, if needed.
|
||||
#
|
||||
!insomething %fullnames:author%, %!quotetitle%, %_in%{%fullbynames:editor%[[ %fullbynames:editor%, %!makeed%,]]} {!<i>!}%booktitle%{!</i>!}%!volnum%{%edition%[[ %edition%]]} (%!location%%publisher%, %year%)%!pages%{%note%[[. %note%]]}
|
||||
|
||||
!insomething %author%, %!quotetitle%, %_in%{%editor%[[ %editor%, %_edtext%,]]} {!<i>!}%booktitle%{!</i>!}%!volnum%{%edition%[[ %edition%]]} (%!location%%publisher%, %year%)%!pages%{%note%[[. %note%]]}
|
||||
|
||||
article %author%, %!quotetitle%, %!emphjournal% {%volume%[[ %volume%{%number%[[, %number%]]}]]} (%year%)%!pages%{%note%[[. %note%]]}
|
||||
article %fullnames:author%, %!quotetitle%, %!emphjournal% {%volume%[[ %volume%{%number%[[, %number%]]}]]} (%year%)%!pages%{%note%[[. %note%]]}
|
||||
|
||||
!booklike %!authoredit%%!emphtitle%%!volnum%{%edition%[[ %edition%]]} (%!location%%publisher%, %year%){%note%[[. %note%]]}
|
||||
book %!booklike%
|
||||
@ -35,7 +59,7 @@ CiteFormat default
|
||||
incollection %!insomething%
|
||||
inproceedings %!insomething%
|
||||
|
||||
!theses %author%, %title% (%!location%{%school%[[%school%]][[%institution%]]}, %year%){%note%[[. %note%]]}
|
||||
!theses %fullnames:author%, %title% (%!location%{%school%[[%school%]][[%institution%]]}, %year%){%note%[[. %note%]]}
|
||||
thesis %!theses%
|
||||
phdthesis %!theses%
|
||||
mastersthesis %!theses%
|
||||
|
@ -7,6 +7,7 @@
|
||||
* \author Herbert Voß
|
||||
* \author Richard Heck
|
||||
* \author Julien Rioux
|
||||
* \author Jürgen Spitzmüller
|
||||
*
|
||||
* Full author contact details are available in file CREDITS.
|
||||
*/
|
||||
@ -45,51 +46,82 @@ namespace lyx {
|
||||
|
||||
namespace {
|
||||
|
||||
// gets the "family name" from an author-type string
|
||||
docstring familyName(docstring const & name)
|
||||
// gets the "prename" and "family name" from an author-type string
|
||||
pair<docstring, docstring> nameParts(docstring const & name)
|
||||
{
|
||||
if (name.empty())
|
||||
return docstring();
|
||||
return make_pair(docstring(), docstring());
|
||||
|
||||
// first we look for a comma, and take the last name to be everything
|
||||
// preceding the right-most one, so that we also get the "jr" part.
|
||||
docstring::size_type idx = name.rfind(',');
|
||||
if (idx != docstring::npos)
|
||||
return ltrim(name.substr(0, idx));
|
||||
vector<docstring> pieces = getVectorFromString(name);
|
||||
if (pieces.size() > 1)
|
||||
// whether we have a jr. part or not, it's always
|
||||
// the first and last item (reversed)
|
||||
return make_pair(pieces.back(), pieces.front());
|
||||
|
||||
// OK, so now we want to look for the last name. We're going to
|
||||
// include the "von" part. This isn't perfect.
|
||||
// Split on spaces, to get various tokens.
|
||||
vector<docstring> pieces = getVectorFromString(name, from_ascii(" "));
|
||||
pieces = getVectorFromString(name, from_ascii(" "));
|
||||
// If we only get two, assume the last one is the last name
|
||||
if (pieces.size() <= 2)
|
||||
return pieces.back();
|
||||
return make_pair(pieces.front(), pieces.back());
|
||||
|
||||
// Now we look for the first token that begins with a lower case letter.
|
||||
// Now we look for the first token that begins with
|
||||
// a lower case letter or an opening group {.
|
||||
docstring prename;
|
||||
vector<docstring>::const_iterator it = pieces.begin();
|
||||
vector<docstring>::const_iterator en = pieces.end();
|
||||
bool first = true;
|
||||
for (; it != en; ++it) {
|
||||
if ((*it).empty())
|
||||
continue;
|
||||
char_type const c = (*it)[0];
|
||||
if (isLower(c))
|
||||
if (isLower(c) || c == '{')
|
||||
break;
|
||||
}
|
||||
|
||||
if (it == en) // we never found a "von"
|
||||
return pieces.back();
|
||||
|
||||
// reconstruct what we need to return
|
||||
docstring retval;
|
||||
bool first = true;
|
||||
for (; it != en; ++it) {
|
||||
if (!first)
|
||||
retval += " ";
|
||||
prename += " ";
|
||||
else
|
||||
first = false;
|
||||
retval += *it;
|
||||
prename += *it;
|
||||
}
|
||||
return retval;
|
||||
|
||||
if (it == en) // we never found a "von" or group
|
||||
return make_pair(prename, pieces.back());
|
||||
|
||||
// reconstruct the family name
|
||||
docstring surname;
|
||||
first = true;
|
||||
for (; it != en; ++it) {
|
||||
if (!first)
|
||||
surname += " ";
|
||||
else
|
||||
first = false;
|
||||
surname += *it;
|
||||
}
|
||||
return make_pair(prename, surname);
|
||||
}
|
||||
|
||||
|
||||
docstring constructName(docstring const & name, string const scheme)
|
||||
{
|
||||
// re-constructs a name from name parts according
|
||||
// to a given scheme
|
||||
docstring const prename = nameParts(name).first;
|
||||
docstring const surname = nameParts(name).second;
|
||||
docstring result = from_ascii(scheme);
|
||||
result = subst(result, from_ascii("%prename%"), prename);
|
||||
result = subst(result, from_ascii("%surname%"), surname);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
bool multipleAuthors(docstring const author)
|
||||
{
|
||||
vector<docstring> const authors =
|
||||
getVectorFromString(author, from_ascii(" and "));
|
||||
return authors.size() > 1;
|
||||
}
|
||||
|
||||
|
||||
@ -256,8 +288,20 @@ BibTeXInfo::BibTeXInfo(docstring const & key, docstring const & type)
|
||||
{}
|
||||
|
||||
|
||||
docstring const BibTeXInfo::getAuthorList(
|
||||
Buffer const * buf, bool full, bool forceshort) const
|
||||
docstring const BibTeXInfo::getAuthorOrEditorList(Buffer const * buf,
|
||||
bool full, bool forceshort) const
|
||||
{
|
||||
docstring author = operator[]("author");
|
||||
if (author.empty())
|
||||
author = operator[]("editor");
|
||||
|
||||
return getAuthorList(buf, author, full, forceshort);
|
||||
}
|
||||
|
||||
|
||||
docstring const BibTeXInfo::getAuthorList(Buffer const * buf, docstring author,
|
||||
bool full, bool forceshort, bool allnames,
|
||||
bool beginning) const
|
||||
{
|
||||
// Maxnames treshold depend on engine
|
||||
size_t maxnames = buf ?
|
||||
@ -277,12 +321,8 @@ docstring const BibTeXInfo::getAuthorList(
|
||||
return authors;
|
||||
}
|
||||
|
||||
docstring author = operator[]("author");
|
||||
if (author.empty()) {
|
||||
author = operator[]("editor");
|
||||
if (author.empty())
|
||||
return author;
|
||||
}
|
||||
|
||||
// FIXME Move this to a separate routine that can
|
||||
// be called from elsewhere.
|
||||
@ -310,6 +350,17 @@ docstring const BibTeXInfo::getAuthorList(
|
||||
string const pairnamesep =
|
||||
buf ? buf->params().documentClass().getCiteMacro(engine_type, "_pairnamesep")
|
||||
: " and ";
|
||||
string firstnameform =
|
||||
buf ? buf->params().documentClass().getCiteMacro(engine_type, "!firstnameform")
|
||||
: "%surname%, %prename%";
|
||||
if (!beginning)
|
||||
firstnameform = buf ? buf->params().documentClass().getCiteMacro(engine_type, "!firstbynameform")
|
||||
: "%prename% %surname%";
|
||||
string othernameform = buf ? buf->params().documentClass().getCiteMacro(engine_type, "!othernameform")
|
||||
: "%surname%, %prename%";
|
||||
if (!beginning)
|
||||
othernameform = buf ? buf->params().documentClass().getCiteMacro(engine_type, "!otherbynameform")
|
||||
: "%prename% %surname%";
|
||||
|
||||
// Shorten the list (with et al.) if forceshort is set
|
||||
// and the list can actually be shorten, else if maxcitenames
|
||||
@ -333,10 +384,18 @@ docstring const BibTeXInfo::getAuthorList(
|
||||
retval += buf ? buf->B_(lastnamesep) : from_ascii(lastnamesep);
|
||||
} else if (i > 0)
|
||||
retval += buf ? buf->B_(namesep) : from_ascii(namesep);
|
||||
retval += familyName(*it);
|
||||
if (allnames)
|
||||
retval += (i == 0) ? constructName(*it, firstnameform)
|
||||
: constructName(*it, othernameform);
|
||||
else
|
||||
retval += nameParts(*it).second;
|
||||
}
|
||||
if (shorten) {
|
||||
if (allnames)
|
||||
retval = constructName(authors[0], firstnameform) + (buf ? buf->B_(etal) : from_ascii(etal));
|
||||
else
|
||||
retval = nameParts(authors[0]).second + (buf ? buf->B_(etal) : from_ascii(etal));
|
||||
}
|
||||
if (shorten)
|
||||
retval = familyName(authors[0]) + (buf ? buf->B_(etal) : from_ascii(etal));
|
||||
|
||||
return convertLaTeXCommands(retval);
|
||||
}
|
||||
@ -766,21 +825,75 @@ docstring BibTeXInfo::getValueForKey(string const & oldkey, Buffer const & buf,
|
||||
ret = modifier_;
|
||||
else if (key == "numericallabel")
|
||||
ret = cite_number_;
|
||||
else if (key == "abbrvauthor") {
|
||||
// Special key to provide abbreviated author names,
|
||||
else if (prefixIs(key, "ifmultiple:")) {
|
||||
// Return whether we have multiple authors
|
||||
docstring const kind = operator[](from_ascii(key.substr(11)));
|
||||
if (multipleAuthors(kind))
|
||||
ret = from_ascii("x"); // any non-empty string will do
|
||||
}
|
||||
else if (prefixIs(key, "abbrvnames:")) {
|
||||
// Special key to provide abbreviated name list,
|
||||
// with respect to maxcitenames. Suitable for Bibliography
|
||||
// beginnings.
|
||||
docstring const kind = operator[](from_ascii(key.substr(11)));
|
||||
ret = getAuthorList(&buf, kind, false, false, true);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (prefixIs(key, "fullnames:")) {
|
||||
// Return a full name list. Suitable for Bibliography
|
||||
// beginnings.
|
||||
docstring const kind = operator[](from_ascii(key.substr(10)));
|
||||
ret = getAuthorList(&buf, kind, true, false, true);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (prefixIs(key, "forceabbrvnames:")) {
|
||||
// Special key to provide abbreviated name lists,
|
||||
// irrespective of maxcitenames. Suitable for Bibliography
|
||||
// beginnings.
|
||||
docstring const kind = operator[](from_ascii(key.substr(15)));
|
||||
ret = getAuthorList(&buf, kind, false, true, true);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (prefixIs(key, "abbrvbynames:")) {
|
||||
// Special key to provide abbreviated name list,
|
||||
// with respect to maxcitenames. Suitable for further names inside a
|
||||
// bibliography item // (such as "ed. by ...")
|
||||
docstring const kind = operator[](from_ascii(key.substr(11)));
|
||||
ret = getAuthorList(&buf, kind, false, false, true, false);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (prefixIs(key, "fullbynames:")) {
|
||||
// Return a full name list. Suitable for further names inside a
|
||||
// bibliography item // (such as "ed. by ...")
|
||||
docstring const kind = operator[](from_ascii(key.substr(10)));
|
||||
ret = getAuthorList(&buf, kind, true, false, true, false);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (prefixIs(key, "forceabbrvbynames:")) {
|
||||
// Special key to provide abbreviated name lists,
|
||||
// irrespective of maxcitenames. Suitable for further names inside a
|
||||
// bibliography item // (such as "ed. by ...")
|
||||
docstring const kind = operator[](from_ascii(key.substr(15)));
|
||||
ret = getAuthorList(&buf, kind, false, true, true, false);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (key == "abbrvciteauthor") {
|
||||
// Special key to provide abbreviated author or
|
||||
// editor names (suitable for citation labels),
|
||||
// with respect to maxcitenames.
|
||||
ret = getAuthorList(&buf, false, false);
|
||||
ret = getAuthorOrEditorList(&buf, false, false);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (key == "fullauthor") {
|
||||
// Return a full author list
|
||||
ret = getAuthorList(&buf, true, false);
|
||||
} else if (key == "fullciteauthor") {
|
||||
// Return a full author or editor list (for citation labels)
|
||||
ret = getAuthorOrEditorList(&buf, true, false);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (key == "forceabbrvauthor") {
|
||||
// Special key to provide abbreviated author names,
|
||||
} else if (key == "forceabbrvciteauthor") {
|
||||
// Special key to provide abbreviated author or
|
||||
// editor names (suitable for citation labels),
|
||||
// irrespective of maxcitenames.
|
||||
ret = getAuthorList(&buf, false, true);
|
||||
ret = getAuthorOrEditorList(&buf, false, true);
|
||||
if (ci.forceUpperCase && isLowerCase(ret[0]))
|
||||
ret[0] = uppercase(ret[0]);
|
||||
} else if (key == "bibentry") {
|
||||
@ -903,13 +1016,13 @@ vector<docstring> const BiblioInfo::getEntries() const
|
||||
}
|
||||
|
||||
|
||||
docstring const BiblioInfo::getAuthorList(docstring const & key, Buffer const & buf) const
|
||||
docstring const BiblioInfo::getAuthorOrEditorList(docstring const & key, Buffer const & buf) const
|
||||
{
|
||||
BiblioInfo::const_iterator it = find(key);
|
||||
if (it == end())
|
||||
return docstring();
|
||||
BibTeXInfo const & data = it->second;
|
||||
return data.getAuthorList(&buf, false);
|
||||
return data.getAuthorOrEditorList(&buf, false);
|
||||
}
|
||||
|
||||
|
||||
@ -1075,8 +1188,8 @@ namespace {
|
||||
// used in xhtml to sort a list of BibTeXInfo objects
|
||||
bool lSorter(BibTeXInfo const * lhs, BibTeXInfo const * rhs)
|
||||
{
|
||||
docstring const lauth = lhs->getAuthorList();
|
||||
docstring const rauth = rhs->getAuthorList();
|
||||
docstring const lauth = lhs->getAuthorOrEditorList();
|
||||
docstring const rauth = rhs->getAuthorOrEditorList();
|
||||
docstring const lyear = lhs->getYear();
|
||||
docstring const ryear = rhs->getYear();
|
||||
docstring const ltitl = lhs->operator[]("title");
|
||||
@ -1164,7 +1277,7 @@ void BiblioInfo::makeCitationLabels(Buffer const & buf)
|
||||
// the first test.
|
||||
// coverity[FORWARD_NULL]
|
||||
if (it != cited_entries_.begin()
|
||||
&& entry.getAuthorList() == last->second.getAuthorList()
|
||||
&& entry.getAuthorOrEditorList() == last->second.getAuthorOrEditorList()
|
||||
// we access the year via getYear() so as to get it from the xref,
|
||||
// if we need to do so
|
||||
&& getYear(entry.key()) == getYear(last->second.key())) {
|
||||
@ -1196,7 +1309,7 @@ void BiblioInfo::makeCitationLabels(Buffer const & buf)
|
||||
if (numbers) {
|
||||
entry.label(entry.citeNumber());
|
||||
} else {
|
||||
docstring const auth = entry.getAuthorList(&buf, false);
|
||||
docstring const auth = entry.getAuthorOrEditorList(&buf, false);
|
||||
// we do it this way so as to access the xref, if necessary
|
||||
// note that this also gives us the modifier
|
||||
docstring const year = getYear(*it, buf, true);
|
||||
|
@ -55,12 +55,16 @@ public:
|
||||
BibTeXInfo(bool ib) : is_bibtex_(ib), modifier_(0) {}
|
||||
/// constructor that sets the entryType
|
||||
BibTeXInfo(docstring const & key, docstring const & type);
|
||||
/// \return the an authorlist (short form by default),
|
||||
/// \return an author or editor list (short form by default),
|
||||
/// used for sorting.
|
||||
/// This will be translated to the UI language if buf is null
|
||||
/// otherwise, it will be translated to the buffer language.
|
||||
docstring const getAuthorList(Buffer const * buf = 0, bool full = false,
|
||||
docstring const getAuthorOrEditorList(Buffer const * buf = 0, bool full = false,
|
||||
bool forceshort = false) const;
|
||||
/// Same for a specific author role (editor, author etc.)
|
||||
docstring const getAuthorList(Buffer const * buf = 0, docstring author = docstring(),
|
||||
bool full = false, bool forceshort = false,
|
||||
bool allnames = false, bool beginning = true) const;
|
||||
///
|
||||
docstring const getYear() const;
|
||||
/// \return formatted BibTeX data suitable for framing.
|
||||
@ -179,8 +183,8 @@ public:
|
||||
std::vector<docstring> const getFields() const;
|
||||
/// \return a sorted vector of BibTeX entry types in use
|
||||
std::vector<docstring> const getEntries() const;
|
||||
/// \return authorlist (abbreviated form by default)
|
||||
docstring const getAuthorList(docstring const & key, Buffer const & buf) const;
|
||||
/// \return author or editor list (abbreviated form by default)
|
||||
docstring const getAuthorOrEditorList(docstring const & key, Buffer const & buf) const;
|
||||
/// \return the year from the bibtex data record for \param key
|
||||
/// if \param use_modifier is true, then we will also append any
|
||||
/// modifier for this entry (e.g., 1998b).
|
||||
|
@ -1818,7 +1818,7 @@ Layout const & DocumentClass::htmlTOCLayout() const
|
||||
string const DocumentClass::getCiteFormat(CiteEngineType const & type,
|
||||
string const & entry, bool const punct, string const & fallback) const
|
||||
{
|
||||
string default_format = "{%author%[[%author%, ]][[{%editor%[[%editor%, ed., ]]}]]}\"%title%\"{%journal%[[, {!<i>!}%journal%{!</i>!}]][[{%publisher%[[, %publisher%]][[{%institution%[[, %institution%]]}]]}]]}{%year%[[ (%year%)]]}{%pages%[[, %pages%]]}";
|
||||
string default_format = "{%fullnames:author%[[%fullnames:author%, ]][[{%fullnames:editor%[[%fullnames:editor%, ed., ]]}]]}\"%title%\"{%journal%[[, {!<i>!}%journal%{!</i>!}]][[{%publisher%[[, %publisher%]][[{%institution%[[, %institution%]]}]]}]]}{%year%[[ (%year%)]]}{%pages%[[, %pages%]]}";
|
||||
if (punct)
|
||||
default_format += ".";
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user