% This is part of the OpTeX project, see http://petr.olsak.net/optex

\_codedecl \_undefined {BIB style (iso690) <2024-07-23>} % loaded on demand by \usebib

\_ifx\_optexbibstyle\_undefined \_errmessage
   {This file can be read by: \_string\usebib/? (iso690) bibfiles command only}
   \_endinput \_fi

   \_doc -----------------------------
   \`\_maybetod` (alias `\:` in the style file group) does not put the second dot.
   \_cod -----------------------------

\_def\_maybedot{\_ifnum\_spacefactor=\_sfcode`\.\_relax\_else.\_fi}
\_tmpnum=\_sfcode`\. \_advance\_tmpnum by-2 \_sfcode`\.=\_tmpnum
\_sfcode`\?=\_tmpnum \_sfcode`\!=\_tmpnum
\_let\:=\_maybedot  % prevents from double periods
\_ifx\.\_undefined \_let\.=\_maybedot \_fi % for backward compatibility

   \_doc -----------------------------
   Option field.
   \_cod -----------------------------

\_CreateField {option}
\_def\_isbiboption#1#2{\_edef\_tmp{\_noexpand\_isbiboptionA{#1}}\_tmp}
\_def\_isbiboptionA#1{\_def\_tmp##1 #1 ##2\_relax{%
      \_if^##2^\_csname iffalse\_ea\_endcsname \_else\_csname iftrue\_ea\_endcsname \_fi}%
   \_ea\_tmp\_biboptionsi #1 \_relax}
\_def\_bibopt[#1]#2#3{\_isbiboption{#1}\_iftrue\_def\_tmp{#2}\_else\_def\_tmp{#3}\_fi\_tmp}
\_def\_biboptionvalue#1#2{\_def\_tmp##1 #1:##2 ##3\_relax{\_def#2{##2}}%
   \_ea\_tmp\_biboptionsi #1: \_relax}

\_def\_readbiboptions{%
   \_RetrieveFieldIn{option}\_biboptionsi
   \_toks1=\_ea{\_biboptionsi}%
   \_edef\_biboptionsi{\_space \_the\_toks1 \_space \_the\_biboptions \_space}%
}

   \_doc -----------------------------
   Formatting of Author/Editor lists.
   \_cod -----------------------------

\_def\_firstauthorformat{%
   \_upper{\_Lastname}\_bprintc\_Firstname{, *}\_bprintc\_Von{ *}\_bprintc\_Junior{, *}%
}
\_def\_otherauthorformat{%
   \_bprintc\_Firstname{* }\_bprintc\_Von{* }\_upper{\_Lastname}\_bprintc\_Junior{, *}%
}
\_def\_commonname{%
  \_ifnum\_NameCount=1
     \_firstauthorformat
  \_else
     \_ifnum0\_namecount=\_NameCount
        \_ifx\_maybeetal\_empty \_bibconjunctionand\_else , \_fi
     \_else , \_fi
     \_otherauthorformat
  \_fi
}
\_def\_authorname{%
   \_ifx\_authlist\_undefined \_edef\_authlist{\_Lastname,\_Firstname,\_Von,\_Junior}%
   \_else \_edef\_authlist{\_authlist;\_Lastname,\_Firstname,\_Von,\_Junior}\_fi
   \_ifnum\_NameCount>0\_namecount\_relax\_else \_commonname \_fi
   \_ifnum\_NameCount=0\_namecount\_relax \_maybeetal \_fi
}
\_def\_editorname{%
   \_ifnum\_NameCount>0\_namecount\_relax\_else \_commonname \_fi
   \_ifnum\_NameCount=0\_namecount\_relax \_maybeetal \_fi
}

\_def\_prepareauedoptions#1{%
   \_def\_mabyetal{}\_csname lb@abbreviatefalse\_endcsname
   \_biboptionvalue{#1max}\_authormax
   \_biboptionvalue{#1min}\_authormin
   \_biboptionvalue{#1pre}\_authorpre
   \_biboptionvalue{#1print}\_authorprint
   \_isbiboption{#1etal}\_iftrue \_def\_maybeetal{\_Mtext{bib.etal}}\_fi
   \_biboptionvalue{#1trim}\_autrim
   \_let\_namecountraw=\_namecount
   \_ifx\_authormax\_empty \_else
      \_ifnum 0\_authormax<0\_namecount
         \_edef\_namecount{\_ifx\_authormin\_empty\_authormax\_else\_authormin\_fi}%
         \_def\_maybeetal{\_Mtext{bib.etal}}%
   \_fi\_fi
   \_ifx\_autrim\_empty \_def\_autrim{10000}\_fi
   \_ifnum\_autrim=0 \_def\_autrim{10000}\_fi
   \_ifnum 0\_namecount<\_autrim\_relax \_else \_AbbreviateFirstname \_fi
}
\_def\_maybeetal{}

\_ifx\upper\_undefined
   \_ifx\caps \_undefined \_def\upper{\_uppercase\_ea}\_else
                          \_def\upper#1{{\caps\_rm #1}}\_fi
\_fi
\_let\_upper=\upper

   \_doc -----------------------------
   Preparing bib-mark (used when \^`\nonumcitations`).
   The \`\_setbibmark` is run at the end of each record.
   The \`\_authlist` includes `Lastname,Firstname,Von,Junior`
   of all authors separated by semicolon (no semicolon at the end of the
   list). If `bibmark` isn't declared explicitly then we create it by the
   \`\_createbibmark``<year>;<authors-list>;,;,;,;\_fin` macro.
   It outputs first Lastname (and adds \"et al." if the second author in the
   <authors-list> is non-empty). Then comma and <year> is appended.
   A user can redefine the `\_createbibark` macro in the `\bibtexhook`
   tokens list, if another bibmark format is needed.
   The macro `\_createbibmark` must be expandable. See also
   \ulink[http://petr.olsak.net/optex/optex-tricks.html\#bibmark]{\OpTeX/ trick~0104}.
   \_cod -----------------------------

\_def\_setbibmark{%
   \_ifx\_authlist\_undefined \_def\_authlist{,;}\_fi
   \_RetrieveFieldIn{bibmark}\_tmp
   \_ifx\_tmp\_empty
      \_RetrieveFieldIn{year}\_tmp
      \_edef\_tmp{\_ea\_createbibmark\_expanded{\_tmp;\_authlist};,;,;,;\_fin}\_fi
   \_bibmark=\_ea{\_tmp}%
}
\_def\_createbibmark #1;#2,#3;#4,#5\_fin{% #1=year #2=LastName #3=FirstName #4=nextAuthor
   #2\_ifx^#4^\_else \_Mtext{bib.etal}\_fi \_ifx^#1^\_else, #1\_fi
}

   \_doc -----------------------------
   Setting phrases.
   \_cod -----------------------------

\_def\_bibconjunctionand{\_Mtext{bib.and}}
\_def\_preurl{\_Mtext{bib.available}}
\_let\_predoi=\_preurl
\_def\_postedition{\_mtext{bib.edition}}
\_def\_Inclause{In:~}
\_def\_prevolume{\_mtext{bib.volume}}
\_def\_prenumber{\_mtext{bib.number}}
\_def\_prepages{\_mtext{bib.prepages}}
\_def\_posteditor{\_ifnum0\_namecountraw>1 \_Mtext{bib.editors}\_else\_Mtext{bib.editor}\_fi}

   \_doc ----------------------------
   \`\_Mtext``{<identifier>}` expands to a
   phrase by outer document language (no entry language).
   \_cod -----------------------------

\_chardef\_documentlanguage=\_language
\_def\_Mtext#1{\_csname _mt:#1:\_csname _lan:\_the\_documentlanguage\_endcsname\_endcsname}

\_CreateField {lang}
\_def\_setlang#1{\_ifx#1\_empty \_else
     \_setbox0=\_vbox{\_langinput{#1}}%
     \_ifcsname _mt:bib.and:#1\_endcsname
        \_language=\_csname _#1Patt\_endcsname \_relax
     \_else \_opwarning{No phrases for "#1" used by [\EntryKey] in .bib}%
   \_fi\_fi
}

   \_doc -----------------------------
   Sorting.
   \_cod -----------------------------

\_fieldalias {key} {sortedby}

   \_doc -----------------------------
   Supporting macros.
   \_cod -----------------------------

\_def\_bibwarninga{\_bibwarning}
\_def\_bibwarningb{\_bibwarning}

\_def\_docitedate #1/#2/#3/#4\_relax{[\_Mtext{bib.citedate}%
   \_if^#2^#1\_else
      \_if^#3^#1/#2\_else
         \_cs{_\_cs{_lan:\_the\_documentlanguage}dateformat}#1/#2/#3\relax
   \_fi\_fi ]%
}
\_def\_doyear#1{
   \_biboptionvalue{yearprint}\_yearprint
   \_ifx\_yearprint\_empty#1\_else\_def\YEAR{#1}\_yearprint\_fi
}
\_def\_preparenumbering{%
   \_def\VOL{\_RetrieveField{volume}}%
   \_def\NO{\_RetrieveField{number}}%
   \_def\PP{\_RetrieveField{pages}}%
}
\_def\_prepareednote{%
   \_def\EDN{\_RetrieveField{edition}}%
   \_def\ADDR{\_RetrieveField{address}}%
   \_def\PUBL{\_RetrieveField{publisher}}%
   \_def\YEAR{\_RetrieveField{year}}%
   \_def\AU{\_bprintb[!author]{\_doauthor0{####1}}{}}%
   \_def\ED{\_bprintb[!editor]{\_doeditor0{####1}}{}}%
   \_preparenumbering
}
\_def\_doedition#1{%
   \_biboptionvalue{editionprint}\_editionprint
   \_ifx\_editionprint\_empty#1\_postedition\_else\_def\ED{#1}\_editionprint\_fi
}
\_def\_doauthor#1#2{\_prepareauedoptions{au}\_let\_iseditorlist=\_undefined
   \_if1#1\_def\AU{#2}\_else\_let\_authorprint=\_empty\_fi
   \_ifx\_authorprint\_empty #2\_else \_authorprint\_fi
}
\_def\_doeditor#1#2{\_prepareauedoptions{ed}\_let\_firstauthorformat=\_otherauthorformat
   \_if1#1\_def\ED{#2}\_else\_let\_authorprint=\_empty\_fi
   \_ifx\_authorprint\_empty #2\_posteditor\_else \_authorprint\_fi
}

   \_doc -----------------------------
   Entry types.
   \_cod -----------------------------

\_sdef{_print:BEGIN}{%
   \_readbiboptions
   \_biboptionvalue{titlepost}\_titlepost
   \_isbiboption{unpublished}\_iftrue \_let\_bibwarninga=\_relax \_let\_bibwarningb=\_relax \_fi
   \_isbiboption{nowarn}\_iftrue \_let\_bibwarning=\_relax \_fi
   \_isbiboption{urlalso}\_iftrue \_def\_preurl{\_Mtext{bib.availablealso}}\_fi
   \_RetrieveFieldIn{lang}\_langentry \_setlang\_langentry
}
\_sdef{_print:END}{%
   \_bprinta [note]       {*.}{}%
   \_setbibmark
}
\_def\_bookgeneric#1{%
   \_bprinta [howpublished]  {[*].\ }{}%
   \_bprintb [edition]    {\_doedition{##1}\:\ }{}%
   \_bprinta [ednote]     {*.\ }{}%
   \_bprinta [address]    {*\_bprintv[publisher]{:}{\_bprintv[year]{,}{.}}\ }{\_bibwarninga}%
   \_bprinta [publisher]  {*\_bprintv[year]{,}{.}\ }{\_bibwarninga}%
   \_bprintb [year]       {\_doyear{##1}\_bprintv[citedate]{\_bprintv[numbering]{.}{}}{.}\ }%
                                                                                     {\_bibwarning}%
   \_bprinta [numbering]  {\_preparenumbering*\_bprintv[citedate]{}{\:}\ }{}%
   \_bprinta [citedate]   {\_docitedate*///\_relax.\ }{}%
   #1%
   \_bprinta [series]     {*.\ }{}%
   \_bprinta [isbn]       {ISBN~*.\ }{\_bibwarningb}%
   \_bprinta [issn]       {ISSN~*.\ }{}%
   \_bprintb [doi]        {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
}
\_sdef{_print:book}{%
   \_bprintb [!author]    {\_doauthor1{##1}\:\ }{\_bibwarning}%
   \_bprintb [title]      {{\_em##1}\_bprintc\_titlepost{\:\ *}\_bprintv[howpublished]{}{\:}\ }%
                                                                                     {\_bibwarning}%
   \_bookgeneric{}%
}
\_sdef{_print:article}{%
   \_biboptionvalue{journalpost}\_journalpost
   \_bprintb [!author]   {\_doauthor1{##1}\:\ }{\_bibwarning}%
   \_bprinta [title]     {*.\ \_bprintc\_titlepost{*.\ }}{\_bibwarning}%
   \_bprintb [journal]   {{\_em##1}\_bprintc\_journalpost{\:\ *}\_bprintv[howpublished]{}{\:}\ }%
                                                                                     {\_bibwarninga}%
   \_bprinta [howpublished]  {[*].\ }{}%
   \_bprinta [address]   {*\_bprintb[publisher]{:}{,}\ }{}%
   \_bprinta [publisher] {*, }{}%
   \_bprinta [month]     {*, }{}%
   \_bprintb [year]      {\_doyear{##1}\_bprintv[volume,number,pages]{,}{\:}\ }{}%
   \_bprinta [numbering] {\_preparenumbering*\_bprintv[citedate]{}{\:}\ }
                        {\_bprinta [volume] {\_prevolume*\_bprintv[number,pages]{,}{\:}\ }{}%
                         \_bprinta [number] {\_prenumber*\_bprintv[pages]{,}{\:}\ }{}%
                         \_bprintb [pages]  {\_prepages\_hbox{##1}\_bprintv[citedate]{}{\:}\ }%
                                                                                     {\_bibwarninga}}%
   \_bprinta [citedate]  {\_docitedate*///\_relax.\ }{}%
   \_bprinta [issn]      {ISSN~*.\ }{}%
   \_bprintb [doi]       {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
   \_bprintb [url]       {\_preurl\_url{##1}. }{}%
}
\_sdef{_print:inbook}{%
   \_let\_bibwarningb=\_relax
   \_bprintb [!author]   {\_doauthor1{##1}\:\ }{\_bibwarning}%
   \_bprinta [title]     {*.\ }{\_bibwarning}%
                        \_Inclause
   \_bprintb [!editor]   {\_doeditor1{##1}\:\ }{}%
   \_bprintb [booktitle] {{\_em##1}\_bprintc\_titlepost{\:\ *}\_bprintv[howpublished]{}{\:}\ }%
                                                                                     {\_bibwarning}%
   \_bookgeneric{\_bprintb [pages]  {\_prepages\_hbox{##1}. }{}}%
}
\_slet{_print:inproceedings}{_print:inbook}
\_slet{_print:conference}{_print:inbook}

\_sdef{_print:thesis}{%
   \_bprintb [!author]    {\_doauthor1{##1}\:\ }{\_bibwarning}%
   \_bprintb [title]      {{\_em##1}\_bprintc\_titlepost{\:\ *}\_bprintv[howpublished]{}{\:}\ }%
                                                                                     {\_bibwarning}%
   \_bprinta [howpublished]  {[*].\ }{}%
   \_bprinta [address]    {*\_bprintv[school]{:}{\_bprintv[year]{,}{.}}\ }{\_bibwarning}%
   \_bprinta [school]     {*\_bprintv[year]{,}{.}\ }{\_bibwarning}%
   \_bprinta [month]      {*, }{}%
   \_bprintb [year]       {\_doyear{##1}\_bprintv[citedate]{}{.}\ }{\_bibwarninga}%
   \_bprinta [citedate]   {\_docitedate*///\_relax.\ }{}%
   \_bprinta [type]       {*\_bprintv[ednote]{,}{.}\ }%
                         {\_ifx\_thesistype\_undefined\_bibwarning
                          \_else\_thesistype\_bprintv[ednote]{,}{.}\ \_fi}%
   \_bprinta [ednote]     {*.\ }{}%
   \_bprintb [doi]        {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
}
\_sdef{_print:phdthesis}{\_def\_thesistype{\_Mtext{bib.phdthesis}}\_cs{_print:thesis}}
\_sdef{_print:mastersthesis}{\_def\_thesistype{\_Mtext{bib.masthesis}}\_cs{_print:thesis}}
\_sdef{_print:bachelorsthesis}{\_def\_thesistype{\_Mtext{bib.bachthesis}}\_cs{_print:thesis}}

\_sdef{_print:online}{%
   \_bprintb [!author]    {\_doauthor1{##1}\:\ }{}%
   \_bprintb [title]      {{\_em##1}\_bprintc\_titlepost{\:\ *}\_bprintv[howpublished]{}{\:}\ }%
                                                                                     {\_bibwarning}%
   \_bprinta [howpublished]  {[*].\ }{}%
   \_bprinta [ednote]     {\_prepareednote*\_bprintv[citedate]{}{.}\ }{}%
   \_bprinta [year]       {}{}%
   \_bprinta [accessed]   {\_docitedate*///\_relax.\ }{\_bibwarning}%
   \_bprintb [doi]        {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
   \_bprintb [url]        {\_preurl\_url{##1}. }{\_bibwarning}%
}

\_sdef{_print:generic}{%
   \_bprintb [!author]    {\_doauthor1{##1}\:\ }{\_bibwarning}%
   \_bprintb [title]      {{\_em##1}\_bprintc\_titlepost{\:\ *}\_bprintv[howpublished]{}{\:}\ }%
                                                                                     {\_bibwarning}%
   \_bprinta [howpublished]  {[*].\ }{}%
   \_bprinta [ednote]     {\_prepareednote*\_bprintv[citedate]{}{.}\ }{\_bibwarning}%
   \_bprinta [citedate]   {\_docitedate*///\_relax.\ }{}%
   \_bprintb [doi]        {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
}
\_slet{_print:booklet}{_print:generic}
\_slet{_print:incollection}{_print:generic}
\_slet{_print:manual}{_print:generic}
\_slet{_print:proceedings}{_print:generic}
\_slet{_print:techreport}{_print:generic}
\_slet{_print:unpublished}{_print:generic}

\_sdef{_print:misc}{\_let\_bibwarning=\_relax \_cs{_print:generic}}

\_endcode


This is the iso690 bibliographic style used by \OpTeX/.

See `op-biblist.bib` for an example of the `.bib` input. You can try it by:

\begtt
\fontfam[LMfonts]
\nocite[*]
\usebib/s (iso690) op-biblist
\end
\endtt

\seccc Common rules in \code{.bib} files

There are entries of type `@FOO{...}` in the `.bib` file. Each entry consists of
fields in the form `name = "value"`, or `name = {value}`. No matter which form is
used. If the value is pure numeric then you can say simply `name = value`.
Warning: the comma after each field value is mandatory! If it is missing then the
next field is ignored or badly interpreted.

The entry names and field names are case insensitive. If there exists a data
field no mentioned here then it is simply ignored. You can use it to store
more information (abstract, for example).

There are \"standard fields" used in ancient bib\TeX/ (author, title, editor, edition,
etc., see \url{http://en.wikipedia.org/wiki/BibTeX}). The `iso690` style introduces
several \"non-standard" fields: ednote, numbering, isbn, issn, doi, url,
citedate, key, bibmark. They are documented here.

Moreover, there are two optional special fields:

\begitems
* lang     = language of the entry. The hyphenation plus autogenerated phrases and
             abbreviations will be typeset by this language.
* option   = options by which you can control a special printing of various fields.
\enditems

There can be only one option field per each entry with (maybe) more options
separated by spaces. You can declare the global option(s) in your document
applied for each entry by `\biboptions={...}`.


\seccc The author field

All names in the author list have to be separated by \"\code{ and }".
Each author can be written in various formats (the `von` part is typically missing):

\begtt
Firstname(s) von Lastname
or
von Lastname, Firstname(s)
or
von Lastname, After, Firstname(s)
\endtt
Only the Lastname part is mandatory. Examples:
\begtt
Petr Olšák
or
Olšák, Petr

Leonardo Piero da Vinci
or
da Vinci, Leonardo Piero
or
da Vinci, painter, Leonardo Piero
\endtt
The separator \"\code{ and }" between authors
will be converted to comma during
printing, but between the semifinal and final author the word \"and" (or something
different depending on the current language) is printed.

The first author is printed in reverse order: \"LASTNAME, Firstname(s) von,
After" and the other authors are printed in normal order: \"Firstname(s)
von LASTNAME, After". This feature follows the ISO 690 norm. The Lastname
is capitalized using uppercase letters. But if the `\caps` font modifier is defined,
then it is used and printed `{\caps\_rm Lastname}`.

You can specify the option `aumax:<number>`. The `<number>` denotes the
maximum authors to be printed. The rest of the authors are ignored and the
`et~al.` is appended to the list of printed authors. This text is
printed only if the `aumax` value is less than the real number of authors.
If you have the same number of authors in the .bib file as you need to print
but you want to append `et~al.` then you can use `auetal` option.

There is an `aumin:<number>` option which denotes the definitive number of
printed authors if the author list is not fully printed due to `aumax`.
If `aumin` is unused then `aumax` authors are printed in this case.

All authors are printed if `aumax:<number>` option isn't given.
There is no internal limit. But you can set the global options in
your document by setting the \^`\biboptions` tokens list. For example:

\begtt
\biboptions={aumax:7 aumin:1}
% if there are 8 or more authors then only the first author is printed.
\endtt

Examples:
\begtt
author = "John Green and Bob Brown and Alice Black",
\endtt
output:    GREEN, John, Bob BROWN, and Alice BLACK.

\begtt
author = "John Green and Bob Brown and Alice Black",
option = "aumax:1",
\endtt
output:    GREEN, John~et~al.

\begtt
author = "John Green and Bob Brown and Alice Black",
option = "aumax:2",
\endtt
output:    GREEN, John, Bob BROWN~et~al.

\begtt
author = "John Green and Bob Brown and Alice Black",
option = "aumax:3",
\endtt
output:    GREEN, John, Bob BROWN, and Alice BLACK.

\begtt
author = "John Green and Bob Brown and Alice Black",
option = "auetal",
\endtt
output:    GREEN, John, Bob BROWN, Alice BLACK~et~al.

If you need to add a text before or after the author's list, you can use
the `auprint:{<value>}` option. The <value> will be printed instead of the
authors list. The <value> can include `\AU` macro which expands to the authors
list. Example:

\begtt
author = "Robert Calbraith",
option = "auprint:{\AU\space [pseudonym of J. K. Rowling]}",
\endtt
output:    CALBRAITH Robert [pseudonym of J. K. Rowling].

You can use the `autrim:<number>` option. All Firstnames of all authors
are trimmed (i. e. reduced to initials) iff the number of authors in the
author field is greater than or equal to `<number>`. There is an exception:
`autrim:0` means that no Firstnames are trimmed. This is the default behavior.
Another example: `autrim:1` means that all Firstnames are trimmed.

\begtt
author = "John Green and Bob Brown and Alice Black",
option = "auetal autrim:1",
\endtt
output:    GREEN, J., B. BROWN, A. BLACK~et~al.

If you need to write a team name or institution instead of authors, replace all
spaces by `\ ` in this name. Such text is interpreted as Lastname. You
can add the secondary name (interpreted as Firstname) after the comma. Example:

\begtt
   author = "Czech\ Technical\ University\ in\ Prague,
             Faculty\ of\ Electrical\ Engineering",
\endtt
output:  CZECH TECHNICAL UNIVERSITY IN PRAGUE, Faculty of Electrical Engineering.


\seccc The editor field

The editor field is used for the list of the authors of the collection. The
analogous rules as in author field are used here. It means that the
authors are separated by \"\code{ and }", the Firstnames, Lastnames, etc. are
interpreted and you can use the options `edmax:<number>`, `edmin:<number>`,
`edetal`, `edtrim:<number>` and `edprint:{<value>}` (with `\ED` macro).
Example:
\begtt
editor = "Jan Tomek and Petr Karas",
option = "edprint:{\ED, editors.} edtrim:1",
\endtt
Output:   J. TOMEK and P. KARAS, editors.

If `edprint` option is not set then `{\ED, eds.}` or `{\ED, ed.}` is used
depending on the entry language and on the singular or plural of
the editor(s).


\seccc The ednote field

The ednote field is used as the secondary authors and more editional info. The
value is read as raw data without any interpretation of Lastname, Firstname
etc.
\begtt
ednote = "Illustrations by Robert \upper{Agarwal}, edited by Tom \upper{Nowak}",
\endtt
output:   Illustrations by Robert AGARWAL, edited by Tom NOWAK.

The `\upper` command has to be used for Lastnames in the ednote field.


\seccc The title field

This is the title of the work. It will be printed (in common entry types) by
italics. The ISO 690 norm declares, that the title plus optional subtitle
are in italics and they are separated by a colon. Next, the optional secondary
title has to be printed in an upright font. This can be added by
`titlepost:{<value>}`. Example:

\begtt
title = "The Simple Title of The Work",
or
title = "Main Title: Subtitle",
or
title  = "Main Title: Subtitle",
option = "titlepost:{Secondary title}",
\endtt
The output of the last example:
{\it Main Title: Subtitle}. Secondary title.


\seccc The edition field

This field is used only for second or more edition of cited work. Write
only the number without the word "edition". The shortcut "ed." (or something
else depending on the current language) is added automatically. Examples:

\begtt
edition = "Second",
edition = "2nd",
edition = "2$^{\rm nd}$",
edition = "2.",
\endtt
Output of the last example:   2. ed.

\begtt
edition = "2."
lang    = "cs",
\endtt
Output:   2. vyd.

Note, that the example `edition = "Second"` may cause problems. If you are
using language "cs" then the output is bad:   Second vyd.
But you can use `editionprint:{<value>}` option. The the <value> is printed
instead of edition field and shortcut. The edition field must be set. Example:

\begtt
edition = "whatever",
option  = "editionprint:{Second full revised edition}",
\endtt
Output:   Second full revised edition.

You can use `\EDN` macro in `editionprint` value. This macro is expanded
to the edition value. Example:

\begtt
edition = "Second",
option  = "editionprint:{\EDN\space full revised edition}",
or
edition = "Second full revised edition",
option  = "editionprint:{\EDN}",
\endtt


\seccc The address, publisher, year fields

This is an anachronism from ancient Bib\TeX/ (unfortunately no exclusive) that
the address field includes only the city of the publisher's residence. No more
data are here. The publisher field includes the name of the publisher.

\begtt
address = "Berlin",
publisher = "Springer Verlag",
year = 2012,
\endtt
Output:   Berlin: Springer Verlag, 2012.

Note, that the year needn't to be inserted into quotes because it is pure
numeric.

The letter a, b, etc. are appended to the year automatically if two or more
subsequent entries in the bibliography list are not distinct by the first
author and year fields. If you needn't this feature, you can use the
`noautoletters` option.

You can use "yearprint:{<value>}" option. If it is set then the <value>
is used for printing year instead the real field value. The reason: year is
sort sensitive, maybe you need to print something else than only sorting key.
Example:

\begtt
year   = 2000,
option = "yearprint:{© 2000}",
\endtt
Output:  © 2000,  sorted by:  2000.

\begtt
year   = "2012a",
option = "yearprint:{2012}",
\endtt
Output:  2012,   sorted by:  2012a.

The address, publisher, and year are typically mandatory fields. If they are
missing then the warning occurs. But you can set `unpublished`
option. Then this warning is suppressed. There is no difference in the
printed output.


\seccc The url field

Use it without `\url` macro, but with `http://` prefix. Example:

\begtt
url = "http://petr.olsak.net/opmac.html",
\endtt

The ISO 690 norm recommends to add the text \"Available from" (or
something else if a different current language is used) before URL.
It means, that the output of the previous example is:

Available from \url{http://petr.olsak.net/opmac.html}.

If the `cs` language is the current one than the output is:

Dostupné z: \url{http://petr.olsak.net/opmac.html}.

If the `urlalso` option is used, then the added text has the form
\"Available also from" or \"Dostupné také z:" (if `cs` language is
in use).


\seccc The citedate field

This is the citation date. The field must be in the form year/month/day. It
means, that the two slashes must be written here. The output depends on the
selected language. Example:

\begtt
citedate = "2004/05/21",
\endtt
Output when `en` is used:    [cit. 2004-05-21].\nl
Output when `cs` is used:    [vid. 21.~5.~2004].


\seccc The howpublished field

This declares the available medium for the cited document if it is not in printed
form. Alternatives: online, CD, DVD, etc. Example:

\begtt
howpublished = "online",
\endtt
Output:   [online].


\seccc The volume, number, pages and numbering fields

The volume is the \"big mark" of the journal issue and the number is the
\"small mark" of the journal issue and pages includes the page range of
the cited article in the journal. The volume is prefixed by Vol.~,
the number by No.~, and the pages by pp.~. But these prefixes depends on the
language of the entry.

Example:

\begtt
volume = 31,
number = 3,
pages  = "37--42",
\endtt
Output:   Vol.~31, No.~3, pp.~37--42.

\begtt
volume = 31,
number = 3,
pages  = "37--42",
lang   = "cs",
\endtt
Output:   ročník~31, č.~3, s.~37--42.

If you disagree with the default prefixes, you can use the numbering field.
When it is set then it is used instead of volume, number, pages fields
and instead of any mentioned prefixes. The numbering can include macros
`\VOL`, `\NO`, `\PP`, which are expanded to the respective values of fields. Example:

\begtt
volume    = 31,
number    = 3,
pages     = "37--42"
numbering = "Issue~\VOL/\NO, pages~\PP",
\endtt
Output:   Issue~31/3, pages~37--42

Note: The volume, numbers, and pages fields are printed without numbering
filed only in the `@ARTICLE` entry. It means, that if you need to visible them
in the `@INBOOK`, `@INPROCEEDINGS` etc. entries, then you must use the numbering field.


\seccc Common notes about entries

The order of the fields in the entry is irrelevant. We use the printed order
in this manual. The exclamation mark (!) denotes the mandatory field. If
the field is missing then a warning occurs during processing.

If the `unpublished` option is set then the fields address, publisher, year,
isbn, and pages are not mandatory. If the `nowarn` option is set then no
warnings about missing mandatory fields occur.

If the field is used but not mentioned in the entry documentation below then
it is silently ignored.

\secccc The `@BOOK` entry

This is used for book-like entries.

Fields: author(!), title(!), howpublished, edition, ednote, address(!),
publisher(!), year(!), citedate, series, isbn(!), doi, url, note.

The ednote field here means the secondary authors (illustrator, cover design
etc.).

\secccc The `@ARTICLE` entry

This is used for articles published in a journal.

Fields: author(!), title(!), journal(!), howpublished, address, publisher,
month, year, [numbering or volume, number, pages(!)], citedate, issn,
doi, url, note.

If the numbering is used then it is used instead volume, number, pages.


\secccc The `@INBOOK` entry

This is used for the part of a book.

Fields: author(!), title(!), booktitle(!), howpublished, edition, ednote,
address(!), publisher(!), year(!), numbering, citedate, series, isbn or
issn, doi, url, note.

The author field is used for author(s) of the part, the editor field
includes author(s) or editor(s) of the whole document. The pages field specifies
the page range of the part. The series field can include more information
about the part (chapter numbers etc.).

The `@INPROCEEDINGS` and `@CONFERENCE` entries are equivalent to `@INBOOK` entry.

\secccc The `@THESIS` entry

This is used for the student's thesis.

Fields: author(!), title(!), howpublished, address(!), school(!),
month, year(!), citedate, type(!), ednote, doi, url, note.

The type field must include the text \"Master's Thesis" or something
similar (depending on the language of the outer document).

There are nearly equivalent entries: `@BACHELORSTHESIS`, `@MASTERSTHESIS` and
`@PHDTHESIS`. These entries set the type field to an appropriate value
automatically. The type field is optional in this case. If it is used then
it has precedence before the default setting.

\secccc The @ONLINE entry

It is intended for online publications.

Fields: author, title(!), howpublished, ednote, publisher, accessed, doi, url(!), note.

\secccc The @MISC entry

It is intended for various usage.

Fields: author, title, howpublished, ednote, citedate, doi, url, note.

You can use `\AU`, `\ED`, `\EDN`, `\VOL`, `\NO`, `\PP`, `\ADDR`, `\PUBL`,
`\YEAR` macros in ednote field. These macros print authors list, editors list,
edition, volume, number, pages, address, publisher, and year field values
respectively.

The reason for this entry is to give to you the possibility to set the format of
entry by your own decision. The most of data are concentrated in the ednote field.

\secccc The `@BOOKLET`, `@INCOLLECTION`, `@MANUAL`, `@PROCEEDINGS`, `@TECHREPORT`, `@UNPUBLISHED` entries

These entries are equivalent to `@MICS` entry because we need to save the
simplicity. They are implemented only for (almost) backward compatibility
with the ancient Bib\TeX/. But the ednote is mandatory field here, so you
cannot use these entries from the old databases without warnings and without
some additional work with the `.bib` file.

\seccc The cite-marks (bibmark) used when \code{\\nonumcitations} is set

When `\nonumcitations` is set then `\cite` prints text-oriented
bib-marks instead of numbers. This style file auto-generates these marks in the
form \"Lastname of the first author, comma, space, the year" if the bibmark field
isn't declared. If you need to set an exception from this common format,
then you can use bibmark field.

The OPmac trick \url{http://petr.olsak.net/opmac-tricks-e.html\#bibmark}
describes how to redefine the algorithm for bibmark auto-generating when you
need the short form of the type [Au13].


\seccc Sorting

If `\usebib/c` is used then entries are sorted by citation order in the text.
If `\usebib/s` is used then entries are sorted by \"Lastname, Firstname(s)" of
the first author and if more entries have this value equal, then the year is
used (from older to newer). This feature follows the recommendation of the
ISO 690 norm.

If you have the same authors and the same year, you can control the sorting
by setting years like 2013, 2013a, 2013b, etc. You can print something
different to the list using `yearprint{<value>}` option, see the section about
address, publisher, and year above. The real value of year field (i.e.\ not
yearprint value) is also used in the text-oriented bib-marks when
`\nonumcitations` is set.

If you have some problems with name sorting, you can use the hidden field
`sortedby` (or `key` field with the same effect).
It can be used for sorting instead of the \"Lastname Firstname(s)"
of the first author. If the `sortedby` field is unset then the \"Lastname Firstname(s)"
is used for sorting normally. Example:

\begtt
author    = "Světla Čmejrková",
sortedby  = "Czzmejrkova Svetla",
\endtt

This entry is now sorted between C and D.

The norm recommends placing the auto-citations at the top of the list of
references. You can do this by setting  `sortedby = "@"`, to each entry with your
name because the `@` character is sorted before `A`.


\seccc Languages

There is the language of the outer document and the languages of each entry.
The ISO 690 norm recommends that the technical notes (the prefix before URL,
the media type, the \"and" conjunction between the semifinal and final author)
maybe printed in the language of the outer document. The data of the entry
have to be printed in the entry language (edition ed./vyd., Vol./ročník,
No./č. etc.). Finally, there are the phrases independent of the language
(for example In:). Unfortunately, the bib\TeX/ supposes that the entry data
are not fully included in the fields so the automaton has to add some
text during processing (\"ed.", \"Vol.", \"see also", etc.).
But what language has to be chosen?

The current value of the `\language` register at the start of the `.bib`
processing is described as the language of the outer document. This language
is used for technical notes regardless of the entry language. Moreover,
each entry can have the `lang` field (short name of the language). This
language is used for ed./vyd., vol./ročník, etc. and it is used for
hyphenation too. If the `lang` is not set then the outer document
language is used.

You can use \^`\_Mtext{bib.<identifier>}` if you want to use a phrase
dependent on outer document language (no on entry language).
Example:

\begtt
howpublished = "\_Mtext{bib.blue-ray}"
\endtt

Now, you can set the variants of `bib.blue-ray` phrase for various
languages:

\begtt
\_sdef{_mt:bib.blue-ray:en} {Blue-ray disc}
\_sdef{_mt:bib.blue-ray:cs} {Blue-ray disk}
\endtt


\seccc Summary of non-standard fields

This style uses the following fields unknown by bib\TeX/:

\begtt
option    ... options separated by spaces
lang      ... the language two-letter code of one entry
ednote    ... edition info (secondary authors etc.) or
              global data in @MISC-like entries
citedate  ... the date of the citation in year/month/day format
numbering ... format for volume, number, pages
isbn      ... ISBN
issn      ... ISSN
doi       ... DOI
url       ... URL
\endtt


\seccc Summary of options

\begtt \catcode`\<=13
aumax:<number>       ... maximum number of printed authors
aumin:<number>       ... number of printed authors if aumax exceeds
autrim:<number>      ... full Firstnames iff number of authors are less than this
auprint:{<value>}     ... text instead authors list (\AU macro may be used)
edmax, edmin, edtrim ... similar as above for editors list
edprint:{<value>}     ... text instead editors list (\ED macro may be used)
titlepost:{<value>}   ... text after title
yearprint:{<value>}   ... text instead real year (\YEAR macro may be used)
editionprint:{<value>} .. text instead of real edition (\EDN macro may be used)
urlalso      ... the ``available also from'' is used instead ``available from''
unpublished  ... the publisher etc. fields are not mandatory
nowarn       ... no mandatory fields
\endtt

Other options in the option field are silently ignored.

\_endinput

2024-07-23 ... generic: warning about missing year removed (bug fixed)
2023-09-13 ... \_createbibmark: no comma if year is missing
2023-06-23 ... @ONLINE entry introduced 
2023-04-22 ... incollection: typo corrected
2023-03-25 ... \_createbibmark introduced
2022-05-10 ... \. -> \:, collision with \oldaccents fixed.
2022-02-04 ... \_langinput used in \_setlang
2021-04-07 ... \biboptions toks declaration moved, bug fixed.
2020-03-10 ... released
