X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fciteengines%2Fnatbib.citeengine;h=ec3628d227266622c45bf693de33474e1f8f5cfc;hb=d4e30ad88f2967a2e464fd3a54a52feeb25e72f1;hp=dcd160f903c3f9a5c78680173dbb5afb4454da13;hpb=8e4bd6a497561b1dda99f0b75102a9f8a1ca46ff;p=lyx.git diff --git a/lib/citeengines/natbib.citeengine b/lib/citeengines/natbib.citeengine index dcd160f903..ec3628d227 100644 --- a/lib/citeengines/natbib.citeengine +++ b/lib/citeengines/natbib.citeengine @@ -1,21 +1,73 @@ # \DeclareLyXCiteEngine[natbib.sty]{Natbib (BibTeX)} # DescriptionBegin # Natbib supports a range of both author-year and numerical styles mainly -# aimed at the Humanities. It features automatic sorting and merging of -# numerical citations, annotations, capitalization of the `van' part of +# aimed at the Humanities. It features automatic sorting and merging of +# numerical citations, annotations, capitalization of the `van' part of # author names, shortened and full author lists, and more. # DescriptionEnd -# Excludes: basic | jurabib # Author: Julien Rioux -Format 62 +Format 64 Requires natbib +# The framework (biblatex|bibtex) +CiteFramework bibtex + +# Cite style variants (default|authoryear|natbib) +# We provide both authoryear and numerical citations CiteEngineType authoryear|numerical -DefaultBiblio plainnat +# Default style files for either engine type +DefaultBiblio authoryear:plainnat|numerical:plainnat + +# Maximum number of names before "et al." chimes in +MaxCiteNames 2 + + +# The syntax of the cite command definitions below is: +# LyXName|alias*[][]=latexcmd +# +# * LyXName: The LyX name as output in the LyX file. For +# portability reasons, we try to use the same +# name for same-formatted commands in the +# different engines (thus many names stem from +# natbib). +# * Alias: A (comma-separated) list of commands that fall +# back to the given LyX name in the current engine. +# This is a bit like "ObsoletedBy" in the layouts. +# * latexcmd: The actual LaTeX command that is output. +# +# Alias and latexcmd are optional. If no latexcmd is given, the +# LyXName will be output to LaTeX. +# +# Note further: +# +# * The LyXName "keyonly" has a special meaning: only the citation key, +# without any latex command, is output. +# * Capitalization indicates that the command also has a capitalized +# form (\Latexcmd vs. \latexcmd). These usually enforce upcasing of +# name prefixes (von Goethe => Von Goethe). +# * Brackets [] indicate the number of optional arguments (0, 1, 2). +# * The star * indicates there is a starred version of the command +# (\latexcmd* vs. \latexcmd). By default, the starred version means: +# Expand the author list even if the maxnames setting would cause +# BibTeX/Biber to shorten it with "et al.". +# If the star has a different meaning for a command, it can be +# specified in angle brackets: . +# Maximal two translatable macro keywords, marked by the prefix '!_', +# can be given. The first points to the string that replaces the +# "Full aut&hor list" checkbox label in the Citation dialog, the +# second one an optional tooltip for this checkbox. Note that these +# two macros have to be defined in the CiteFormat section (see below), +# dropping the '!' from the prefix (see below), e.g.: +# _stardesc Starred command label +# _stardesctooltip Tooltip for the starred command checkbox. + +# +# CITE COMMAND DEFINITIONS for either engine type +# CiteEngine authoryear Citet*[][] Citep*[][] @@ -25,6 +77,7 @@ CiteEngine authoryear citeyear[] citeyearpar[][] nocite + keyonly End CiteEngine numerical @@ -36,71 +89,174 @@ CiteEngine numerical citeyearpar[][] citeyear nocite + keyonly End + +# +# CITE FORMAT +# + +# The following defines how the commands are represented in the GUI +# (inset button and citation dialog) as well as in XHTML, docbook and +# plain text output. +# +# There are common definitions (default) and specific definitions for +# either cite engine type (which overwrite existing defaults. +# + +# Input standard format definitions for the bibliography +Input stdciteformats.inc + CiteFormat default - # translatable bits + # + # MACROS + # + # 1. Translatable bits (need to be marked by _ prefix) + # Note that preceding and trailing spaces matter. + # _notcited not cited _addtobib Add to bibliography only. + _keyonly Key only. + _key Key + # The following are handled by BiblioInfo + _etal et al. + _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 + # + # 2. Macros re-used in the style definitions + # + # A link that lets us jump to the bibliography entry in LyXHTML + # %clean:key% will be substituted by the cite key to give a unique id !startlink {!!} !endlink {!!} + # "Author et al." or "??" + !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" + !textafter {%textafter%[[, %textafter%]]} + # Add a year if it exists (else "??") and possibly a modifier (as in 2017a) + !year {%year%[[%year%]][[??]]}{%modifier%[[%modifier%]]} + + # "...; Author..." !nextauthor {%next%[[%!sep% %!startlink%%!abbrvauthor%%!endlink%%!nextauthor%]]} + # Handle starred command: abbr. or full author list + !makenextauthor {%next%[[%!sep% %!startlink%%!makeauthor%%!endlink%%!makenextauthor%]]} + # "..., CiteKey..." !nextkey {%next%[[%!sep% %key%%!nextkey%]]} + # "..., Year..." !nextyear {%next%[[%!sep% %!startlink%%!year%%!endlink%%!nextyear%]]} - !abbrvauthor {%abbrvauthor%[[%abbrvauthor%]][[??]]} - !textbefore {%textbefore%[[%textbefore% ]]} - !textafter {%textafter%[[, %textafter%]]} - !year {%year%[[%year%]][[??]]}{%modifier%[[%modifier%]]} + # + # ACTUAL STYLE DEFINITIONS + # + # (identical in authoryear and numerical) + # - # cite styles - citet %!citet%%!textafter%%!close% - citealt %!citealt%%!textafter% + # "(cf. Year; NextYear, p. xx)" [Authoryear] / "(cf. Year, NextYear, p. xx)" [Numerical] citeyearpar %!open%%!textbefore%%!startlink%%!year%%!endlink%%!nextyear%%!textafter%%!close% + # "Add to bibliography only." (dialog) / "[ID] (not cited)" (button) nocite {%dialog%[[%_addtobib%]][[%key%%!nextkey% (%_notcited%)]]} + # Output only the key + keyonly {%dialog%[[%_keyonly%]][[%_key%: %key%%!nextkey%]]} End CiteFormat authoryear + # + # MACROS + # !open ( !sep ; !close ) - !citet %!startlink%%!abbrvauthor%%!endlink% %!open%%!textbefore%%!year%%!nextcitet% - !citealt %!startlink%%!abbrvauthor% %!textbefore%%!year%%!endlink%%!nextcitealt% - !citealp %!startlink%%!abbrvauthor%, %!year%%!endlink%%!nextcitealp% + # "Author et al. (cf. Year..." + !makecitet %!startlink%%!makeauthor%%!endlink% %!open%%!textbefore%%!year%%!nextcitet% + # "Author et al. cf. Year..." [sic!] + !makecitealt %!startlink%%!makeauthor% %!textbefore%%!year%%!endlink%%!nextcitealt% + # "Author et al., Year..." + !makecitealp %!startlink%%!makeauthor%, %!year%%!endlink%%!nextcitealp% + + # "...); Nextauthor (Year..." + !nextcitet {%next%[[%!close%%!sep% %!startlink%%!makeauthor%%!endlink% %!open%%!year%%!nextcitet%]]} + # "...; NextAuthor et al. Year..." + !nextcitealt {%next%[[%!sep% %!makecitealt%]]} + # "...; NextAuthor et al., Year..." + !nextcitealp {%next%[[%!sep% %!makecitealp%]]} - !nextcitet {%next%[[%!close%%!sep% %!citet%]]} - !nextcitealt {%next%[[%!sep% %!citealt%]]} - !nextcitealp {%next%[[%!sep% %!citealp%]]} + # + # ACTUAL STYLE DEFINITIONS + # + # (additions and modifications to default) + # - cite %!citet%%!textafter%%!close% - citep %!open%%!textbefore%%!citealp%%!textafter%%!close% - citealp %!textbefore%%!citealp%%!textafter% - citeauthor %!startlink%%!abbrvauthor%%!endlink%%!nextauthor%%!textafter% + # "Author (cf. Year); NextAuthor (Year, p. xx)" + citet %!makecitet%%!textafter%%!close% + # "(cf. Author et al., Year; NextAuthor et al., Year, p. xx)" + citep %!open%%!textbefore%%!makecitealp%%!textafter%%!close% + # "cf. Author et al., Year; NextAuthor et al., Year, p. xx" + citealp %!textbefore%%!makecitealp%%!textafter% + # "Author cf. Year; NextAuthor Year, p. xx" [sic!] + citealt %!makecitealt%%!textafter% + # "Author; NextAuthor, p. xx" + citeauthor %!startlink%%!makeauthor%%!endlink%%!makenextauthor%%!textafter% + # "Year; NextYear, p. xx" citeyear %!startlink%%!year%%!endlink%%!nextyear%%!textafter% + + # Fallback style: "Author (cf. Year); NextAuthor (Year, p. xx)" + cite %!makecitet%%!textafter%%!close% End CiteFormat numerical + # + # MACROS + # !open [ !sep , !close ] - !citet %!abbrvauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet% - !citealt %!abbrvauthor% %!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitealt% - + # "Author [cf. ID..." + !makecitet %!makeauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet% + # "Author cf. ID..." + !makecitealt %!makeauthor% %!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitealt% + # "ID..." !hashkey {%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%%!nexthashkey%]]} - !nextcitet {%next%[[%!close%%!sep% %!citet%]]} - !nextcitealt {%next%[[%!sep% %!citealt%]]} + # "...], NextAuthor [ID..." + !nextcitet {%next%[[%!close%%!sep% %!makeauthor% %!open%%!textbefore%{%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitet%]]} + # "..., NextAuthor ID..." + !nextcitealt {%next%[[%!sep% %!makeauthor% {%dialog%[[#ID]][[%!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%]]}%!nextcitealt%]]} + # FIXME: What is this? !nexthashid {%next%[[%!sep% #ID%!nexthashid%]]} + # "..., NextID..." !nexthashkey {%next%[[%!sep% %!startlink%{%numericallabel%[[%numericallabel%]][[#%key%]]}%!endlink%%!nexthashkey%]]} - cite %!open%%!textbefore%%!hashkey%%!textafter%%!close% + # + # ACTUAL STYLE DEFINITIONS + # + # (additions and modifications to default) + # + + # "[cf. ID, NextID, p. xx]" citep %!open%%!textbefore%%!hashkey%%!textafter%%!close% + # "Author [cf. ID], Nextauthor [NextID, p. xx]" + citet %!makecitet%%!textafter%%!close% + # "cf. ID, NextID, p. xx" citealp %!textbefore%%!hashkey%%!textafter% - citeauthor %!startlink%%!abbrvauthor%%!endlink%%!nextauthor% + # "Author cf. ID, NextAuthor ID, p. xx" + citealt %!makecitealt%%!textafter% + # "Author, NextAuthor" + citeauthor %!startlink%%!makeauthor%%!endlink%%!makenextauthor% + # "Year, NextYear" citeyear %!startlink%%!year%%!endlink%%!nextyear% + + # Fallback style: "[cf. ID, NextID, p. xx]" + cite %!open%%!textbefore%%!hashkey%%!textafter%%!close% End