summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/abntex2/tex/abntex2cite.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/abntex2/tex/abntex2cite.sty')
-rw-r--r--macros/latex/contrib/abntex2/tex/abntex2cite.sty1349
1 files changed, 1349 insertions, 0 deletions
diff --git a/macros/latex/contrib/abntex2/tex/abntex2cite.sty b/macros/latex/contrib/abntex2/tex/abntex2cite.sty
new file mode 100644
index 0000000000..931d312083
--- /dev/null
+++ b/macros/latex/contrib/abntex2/tex/abntex2cite.sty
@@ -0,0 +1,1349 @@
+%% abntex2cite.sty, v-1.9.7 laurocesar
+%% Copyright 2012-2018 by abnTeX2 group at https://www.abntex.net.br/
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is the abnTeX2 team, led
+%% by Lauro César Araujo. Further information are available on
+%% https://www.abntex.net.br/
+%%
+%% Creator and original mantainer: Gerald Weber <gweber@codigolivre.org.br>
+%% Copyright 2001-2002 by the abnTeX group at http://abntex.codigolivre.org.br
+
+% How this package is organized:
+% ------------------------------
+% - Implementing `search for substring'
+% - \AfterTheBibliography{} hook
+% - Options declaration (search for substring needed here)
+% alf, num (default)
+% alfantigo, experimental (default)
+% biblabel-on-margin
+% sem-bibtex (apply settings without count with code in .bbl)
+% no-abnt-option-file (in case one defines its own options file)
+% recuo (then makes bibitem indent 1.8em) (default: NO indentation)
+% recuo=<length> (sets custom indentation)
+% indent is an alias for recuo (indent or indent=<length>)
+% versalete author in alf mode as with smallcaps
+% other options are considered "\citeoption's" (mechanism includes a
+% list that stores non defined options, and in \AtBeginDocument,
+% \citeoption acts over this list)
+% - allocing auxiliar variables
+% - \citeoption
+% Similar to \nocite, but does not complain about obviously not defined
+% citations. Intented to access options of abnTeX's bibtex styles.
+% - \bibliography
+% extra care to auto include abnt-options as bibliography database (if
+% needed)
+% - \bibliographystyle
+% if none is given, the style correspondent to the package style in
+% use (alf or num) is given.
+% - Style customization
+% \authorcapstyle, \authorstyle, \yearstyle, \optionaltextstyle
+% (detail: \authorcapstyle's default setting uses \smaller from relsize
+% package, but only if package is present.)
+% - \bibitem
+% defines action of \bibitem by its subcommands. Comatibility with old
+% abnt-alf is present.
+% - \hiddenbibitem
+% creates an empty bibliography entry buts creates all labels.
+% - \abntrefinfo
+% From the creation of abntcite, options are present as a separated
+% command. This enables compatibility with any bibtex style.
+%
+% - \cite
+% This command depends on if the style is alf or num
+% If alf, then \cite produces (<explicit (capital)>, <year>)
+% If num, then \cite produces a superscript with [<implicit (lowercase)>]
+% - \citeonline
+% This command depends on if the style is alf or num
+% If alf, \citeonline produces <implicit (lowercase)>, (<year>)
+% If num, \citeonline then produces <implicit (lowercase)>
+% - \citeyear
+% Produces <year>
+% - \citeauthor
+% Produces <explicit (capital) author>
+% - \citeauthoronline
+% Produces <implicit (lowercase) author>
+% - \apud[comments]{First}{Second}
+% Produces a double citation: (FIRST, YEAR apud SECOND, YEAR<, comments>)
+% - \apudonline[comments]{First]{Second]
+% Produces a double citation: First (apud SECOND, YEAR<, comments>)
+% - \Idem[comments]{Author}
+% Produces: Id., YEAR<, comments>
+% - \Ibidem[comments]{Author}
+% Produces: Ibid.<, comments>
+% - \opcit[comments]{Author}
+% Produces: AUTHOR, op. cit.<, comments>
+% - \cfcite[comments]{Author}
+% Produces: Cf. AUTHOR, YEAR<, comments>
+%
+% - implementing `recuo' (bibindent style)
+% - Macros for output sorted and compressed numerical citations
+% [9,2,3,1,4,11,7,10] becames [1--4,7,9--11]
+
+\NeedsTeXFormat{LaTeX2e}
+%\input{cvs-id.def}
+%\CVSExtract$Id: abntcite.sty,v 1.26 2003/10/13 09:40:41 gweber Exp $
+%\CVSPackage{abntcite}{\space Chamadas de referencias no texto (NBR10520)} %substitui \ProvidesPackage (replaces \ProvidesPackage)
+\ProvidesPackage{abntex2cite}[2018/11/24 v-1.9.7 abnTeX2]
+\RequirePackage{ifthen}
+\RequirePackage{calc}
+\RequirePackage{abntex2abrev}
+\RequirePackage{setspace}
+\RequirePackage{url} %*****
+
+%%%%%% Options Declaration %%%%%%
+
+
+%----------------------------------------------------------------
+% Extracted from substr.sty (2000-06-15)
+%----------------------------------------------------------------
+% Copyright 2000 Harald Harders <h.harders@tu-bs.de>
+% Look at www.ctan.org for original package
+%
+% Commands:
+%
+% \IfSubStringInString{substring}{string}{true part}{false part}
+% This command searches <substring> in <string> and executes the
+% <true part> if it is and else the <else part>
+
+% expands the first and second argument with
+% \protected@edef and calls #3 with them:
+\ifx \su@ExpandTwoArgs\undefined
+ \newcommand{\su@ExpandTwoArgs}[3]{%
+ \protected@edef\su@SubString{#1}%
+ \protected@edef\su@String{#2}%
+ \expandafter\expandafter\expandafter#3%
+ \expandafter\expandafter\expandafter{%
+ \expandafter\su@SubString\expandafter
+ }\expandafter{\su@String}%
+ }
+\fi
+%%
+%% tests if #1 in #2. If yes execute #3, else #4
+\ifx \IfSubStringInString\undefined
+ \newcommand*{\IfSubStringInString}[2]{%
+ \su@ExpandTwoArgs{#1}{#2}\su@IfSubStringInString
+ }
+\fi
+%%
+\ifx \su@IfSubStringInString\undefined
+ \newcommand*{\su@IfSubStringInString}[2]{%
+ \def\su@compare##1#1##2\@nil{%
+ \def\su@param{##2}%
+ \ifx\su@param\@empty
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }%
+ \su@compare#2#1\@nil
+ }
+\fi
+
+%----------------------------------------------------------------
+
+
+% alf, num: main options
+\newboolean{ABCItextondemand}
+
+\DeclareOption{alf}{\def\AbntCitetype{alf}\setboolean{ABCItextondemand}{true}}
+\DeclareOption{num}{\def\AbntCitetype{num}}
+\ExecuteOptions{num}
+
+% references on page foot
+\newboolean{ABCIfoot}
+\DeclareOption{foot}{\setboolean{ABCIfoot}{true}%
+ \setboolean{ABCItextondemand}{false}}
+\DeclareOption{not-foot}{\setboolean{ABCIfoot}{false}%
+ \setboolean{ABCItextondemand}{true}}
+\ExecuteOptions{not-foot}
+
+% cite text on demand (defaults depends on foot or not-foot)
+% (also recall that options are executed in order of definition at
+% \ProcessOptions)
+\DeclareOption{load-text-on-demand}{\setboolean{ABCItextondemand}{true}}
+\DeclareOption{load-text}{\setboolean{ABCItextondemand}{false}}
+
+% compatibility with old abnt-alf.bst
+\newboolean{ABCIcompoldalf}
+\DeclareOption{alfantigo}{\setboolean{ABCIcompoldalf}{true}}
+\DeclareOption{experimental}{\setboolean{ABCIcompoldalf}{false}}
+\ExecuteOptions{experimental}
+
+% biblabel-on-margin
+\newboolean{ABCIbibjustif}
+\DeclareOption{bibjustif}{\setboolean{ABCIbibjustif}{true}}
+\DeclareOption{bibleftalign}{\setboolean{ABCIbibjustif}{false}}
+\ExecuteOptions{bibleftalign}
+
+% biblabel-on-margin
+\newboolean{ABCIbiblabelonmargin}
+\DeclareOption{biblabel-on-margin}
+ {\setboolean{ABCIbiblabelonmargin}{true}}
+\DeclareOption{biblabel-not-on-margin}
+ {\setboolean{ABCIbiblabelonmargin}{false}}
+\ExecuteOptions{biblabel-not-on-margin}
+
+% \bibliography includes abnt-options automatically unless next option is used
+\newboolean{ABCIauto-abntoptions}
+\DeclareOption{abnt-option-file}{\setboolean{ABCIauto-abntoptions}{true}}
+\DeclareOption{no-abnt-option-file}{\setboolean{ABCIauto-abntoptions}{false}}
+\ExecuteOptions{abnt-option-file}
+
+% recuo : compatibility with old norms
+\ifx \bibindent\undefined
+ \newlength{\bibindent}
+\fi
+\setlength{\bibindent}{0em}
+\DeclareOption{recuo}{\setlength{\bibindent}{1.8em}}
+
+% indent : an alias to recuo
+\DeclareOption{indent}{\setlength{\bibindent}{1.8em}}
+
+\newcommand{\citebrackets}[2]{\def\citeopen{#1}\def\citeclose{#2}}
+\newcommand{\setcitebrackets}{\citebrackets()}
+% 10520:2002 now defines only two numerical styles
+\newboolean{ABNTovercite}
+\DeclareOption{overcite}{\setboolean{ABNTovercite}{true}}
+\DeclareOption{inlinecite}{\setboolean{ABNTovercite}{false}}
+
+% \authorcapstyle em versalete (smallcaps) como opcional
+\newboolean{ABNTversalete}
+\setboolean{ABNTversalete}{false}
+\DeclareOption{versalete}{\setboolean{ABNTversalete}{true}}
+
+% 10520:2002 does not allow (XX) or [XX] for superscript cites
+\newboolean{ABNTstrictnumformat}
+
+% Incorpora o arquivo nbr10520-2002.def do abntex1
+% A norma NBR 10520:2002 removeu as opções [] e () para citações
+% em superscrito
+\ifx\AbntCitetype\AbntCitetypeALF
+\else
+\renewcommand{\setcitebrackets}{
+\ifthenelse{\boolean{ABNTovercite}}{\citebrackets{}{}}{\citebrackets()}}
+\fi
+
+%
+% Allocing variables
+%
+
+% used for \@biblabel in num
+\newlength{\minimumbiblabelwidth}
+\newlength{\ABCIauxlen}
+
+% auxiliar counters used in `sort and group' mechanism
+\newcounter{ABCIaux}
+\newcounter{ABCImax}
+
+% Here I define a LaTeX list that will contain all options not defined
+% before.
+%
+% A LaTeX list is a command containing a comma separated list of
+% itens. The list is processed by command \@for, as in \citeoption.
+\def\citeoptionlist{}
+% This command adds a string to the list.
+\newcommand{\addtociteoptionlist}[1]{
+ \ifthenelse{\equal{\citeoptionlist}{}}
+ {\edef\citeoptionlist{#1}}
+ {\edef\citeoptionlist{\citeoptionlist,#1}}
+}
+
+
+% suporting options in a keyval style
+% recuo=<length> gives indentation of \bibitem
+% other options: passed thought \citeoption (stored now in \citeoptionlist
+% and after (in \AtBeginDocument hook) \citeoption will act on it)
+
+% To grab 6 letters. (recuo=)
+\newcommand{\grabsix}[6]{}
+
+% To grab 7 letters. (indent=)
+\newcommand{\grabseven}[7]{}
+
+\DeclareOption{abnt-substyle=COPPE}
+ {\newcommand{\bibtextitlecommand}[2]{``#2''}%
+ \addtociteoptionlist{abnt-substyle=COPPE}}
+
+\DeclareOption*{
+ \IfSubStringInString{recuo=}{\CurrentOption}
+ {\setlength{\bibindent}{\expandafter\grabsix\CurrentOption}}
+ {\IfSubStringInString{indent=}{\CurrentOption}
+ {\setlength{\bibindent}{\expandafter\grabseven\CurrentOption}}
+ {\addtociteoptionlist{\CurrentOption}}}
+}
+
+\provideboolean{ABNThyperref}
+
+\@ifpackageloaded{hyperref}{%
+%\addtociteoptionlist{abnt-url-package=hyperref}
+\setboolean{ABNThyperref}{true}
+}{\setboolean{ABNThyperref}{false}}
+
+\@ifpackageloaded{url}{%
+\addtociteoptionlist{abnt-url-package=url}
+\def\UrlLeft{<}
+\def\UrlRight{>}
+\urlstyle{same}}
+
+\provideboolean{ABNTbackref} %By AWSS
+
+\@ifpackageloaded{backref}{% %By AWSS
+\setboolean{ABNTbackref}{true} %By AWSS
+}{\setboolean{ABNTbackref}{false}} %By AWSS
+
+\ProcessOptions
+
+% Check if not running pdf/xe/lua/htlatex, then load breakurl
+% From http://tex.stackexchange.com/a/53943
+\RequirePackage{ifpdf,ifxetex}
+\edef\texforht{TT\noexpand\fi
+ \@ifpackageloaded{tex4ht}
+ {\noexpand\iftrue}
+ {\noexpand\iffalse}}
+\ifpdf
+\else
+ \ifxetex
+ \else
+ \if\texforht
+ \else
+ \@ifpackageloaded{hyperref}
+ {\RequirePackage{breakurl}}{}
+ \fi% texforht
+ \fi% xetex
+\fi% pdftex
+
+% really foot?
+\ifthenelse{\boolean{ABCIfoot}\and\equal{\AbntCitetype}{num}}
+ {\setboolean{ABCIfoot}{true}}
+ {\setboolean{ABCIfoot}{false}}
+
+% Now, after all options are processed, \citeoption process the list of
+% options given as package options.
+%
+\ifthenelse{\equal{\citeoptionlist}{}}
+ {}
+ {\AtBeginDocument{\citeoption{\citeoptionlist}}}
+
+
+% \citeoption - equal to \nocite (I copied source from \nocite)
+% but not complains about this option be obviously undefined
+\newboolean{ABCIciteoptionwasused}
+\setboolean{ABCIciteoptionwasused}{false}
+\def\citeoption#1{\@bsphack
+ \@for\@citekey:=#1\do{%
+ % next line eliminates white space before citation name
+ \edef\@citekey{\expandafter\@firstofone\@citekey}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citekey}}\fi
+ }%
+ \@esphack%
+ \setboolean{ABCIciteoptionwasused}{true}%
+}
+
+
+%
+% \bibliography{list of files .bib to be processed by bibTeX}
+%
+% I had to redefine this command such that abnt-options.bib is
+% automatically used in case that some \citeoption was given as package
+% option. An entry
+% \bibliography{abnt-options,abnt-options,..}
+% produces an error in bibTeX. So I had to check if user already
+% includes abnt-options by (him/her)self.
+%
+% implementation:
+%
+% \citeoption was used?
+% If YES, (abnt-options must be given to bibtex!)
+% checks for abnt-options into parameter given to \bibliography
+% if present
+% user have included, so I don't add it once more
+% not present
+% I add necessary abnt-options
+% If NO
+% no changes to \bibliography
+
+\def\bibliography#1{% ****
+ {
+ \ifx \SingleSpacing\undefined
+ \singlespacing
+ \else
+ \SingleSpacing
+ \fi
+ %
+ \ifthenelse{\boolean{ABCIciteoptionwasused}
+ \and\boolean{ABCIauto-abntoptions}}
+ {
+ % this system of checking is not good...
+ \IfSubStringInString{abntex2-options}{#1}
+ {\if@filesw\immediate\write\@auxout{\string\bibdata{#1}}\fi}
+ {\if@filesw\immediate\write\@auxout{\string\bibdata{abntex2-options,#1}}\fi}
+ }
+ {
+ \if@filesw
+ \immediate\write\@auxout{\string\bibdata{#1}}%
+ \fi
+ }
+ \@input@{\jobname.bbl}
+ }
+ }
+
+
+%
+% The next piece of code looks if bibtexstyle is used or not, and if not,
+% includes the respective style from the abntcite mode (alf or num)
+
+\newboolean{ABCIbibtexstyleused}
+\setboolean{ABCIbibtexstyleused}{false}
+
+%
+\def\bibliographystyle#1{%
+ \ifx\@begindocumenthook\@undefined\else
+ \expandafter\AtBeginDocument
+ \fi
+ {\if@filesw
+ \immediate\write\@auxout{\string\bibstyle{#1}}%
+ \fi}
+ \setboolean{ABCIbibtexstyleused}{true}
+ }
+
+% \AtEndDocument is the last chace for include bibliography style..
+\AtEndDocument{
+ \ifthenelse{\not\boolean{ABCIbibtexstyleused}}
+ {\bibliographystyle{abntex2-\AbntCitetype}}
+ {}
+}
+
+
+% relsize used in \authorcapstyle. If package not present, \smaller=\relax
+\IfFileExists{relsize.sty}
+ {\RequirePackage{relsize}}
+ {\let\smaller\relax}
+
+%%%%%%%%%%%%%% Style %%%%%%%%%%%%%%%%%
+
+
+
+\newcommand{\authorcapstyle}{\ifthenelse{\boolean{ABNTversalete}}{\smaller}{}}
+\newcommand{\authorstyle}{\relax}
+\newcommand{\yearstyle}{\relax}
+\newcommand{\optionaltextstyle}{\relax}
+\newcommand{\citenumstyle}{\relax}
+
+\newlength{\biblabelsep}
+\setlength{\biblabelsep}{1ex}
+
+%%%%%%%%%%%%%%%%%%%%% Implementation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% automatic care for commas inside references
+\providecommand{\ABCIccomma}{}
+\newcommand{\ABCIcitecommadefault}{,\penalty\@m\ }
+\newcommand{\ABCIcitecomma}{\ABCIccomma\let\ABCIccomma\ABCIcitecommadefault}
+\newcommand{\ABCIinitcitecomma}{\def\ABCIccomma{}}
+\newcommand{\ABCIcitecolondefault}{; }%{;\penalty\@m\ }
+
+
+% How \bibitem works?
+% definition of \bibitem
+% \def\bibitem{\@ifnextchar\@lbibitem\@bibitem}
+
+\ifthenelse{\boolean{ABCIcompoldalf}\and\equal{\AbntCitetype}{alf}}
+{
+
+% In the old mplementation on abnt-alf, the command \bibitem should be
+% \bibitem[{explicit}{implicit}{year}]{key}
+
+ % if \bibitem has optional parameter, uses it (three pieces of data
+ % stored into .aux file)
+
+ \def\@lbibitem[#1#2#3]#4{
+ \gdef\abntnextkey{#4}
+ \item[\@biblabel{#1}\hfill]%
+ \if@filesw
+ {
+ \let\protect\noexpand
+ \immediate\write\@auxout{\string\bibcite{#4++EXPL}{#1}}
+ \immediate\write\@auxout{\string\bibcite{#4++IMPL}{#2}}
+ \immediate\write\@auxout{\string\bibcite{#4++YEAR}{#3}}
+ }
+ \fi%
+ \ignorespaces
+ }
+
+ % if no optional is used, uses a list counter (stores its value into .aux)
+ \def\@bibitem#1{
+ \gdef\abntnextkey{#1}
+ \item%
+ \if@filesw
+ {\immediate\write\@auxout{\string\bibcite{#1}{\the\value{\@listctr}}}}
+ \fi%
+ \ignorespaces
+ }
+
+}
+{ %if normal mode (non-compatible with old alf)
+
+ \ifthenelse{\boolean{ABCIfoot}}
+ {
+ % foot-num mode
+
+ \def\@lbibitem[#1]#2{\gdef\abntnextkey{#2}}
+
+ \def\@bibitem#1{\gdef\abntnextkey{#1}}
+
+ }
+ {
+ \def\@lbibitem[#1]#2{
+ \gdef\abntnextkey{#2}
+ \item[\@biblabel{#1}\hfill]%
+ \ifthenelse{\boolean{ABNThyperref}}{%
+ \hyper@anchorstart{cite.#2}\relax\hyper@anchorend}{}%
+ \if@filesw
+ {
+ \let\protect\noexpand
+ \immediate\write\@auxout{\string\bibcite{#2}{#1}}
+ }
+ \fi%
+ \ignorespaces
+ }
+
+ \def\@bibitem#1{
+ \gdef\abntnextkey{#1}
+ % \ifthenelse{}{\item}{\item}
+ \item%
+ \ifthenelse{\boolean{ABNThyperref}}{%
+ \hyper@anchorstart{cite.#1}\relax\hyper@anchorend}{}%
+ \if@filesw
+ {\immediate\write\@auxout{\string\bibcite{#1}{\the\value{\@listctr}}}}
+ \fi%
+ \ignorespaces
+ }
+ }
+}
+
+\newcommand{\hiddenbibitem}[2][]{\gdef\abntnextkey{#2}}
+
+\newcommand{\ABCIgetcitetext}[1]{
+ \if@filesw
+ {\let\protect\noexpand
+ \immediate\write\@auxout{\string\bibcite{\abntnextkey++TEXT}{#1}}}%
+ \fi}
+
+\newcommand{\ABCIgetcitetextecho}[1]{\ABCIgetcitetext{#1}#1}
+
+%we are repeating \bibcite command as defined in hyperref.sty
+%so that we have it all together at one place.
+\ifthenelse{\boolean{ABNThyperref}}{%
+%\renewcommand{\bibcite}[2]{%
+% \@newl@bel{b}{#1}{\hyper@@link[cite]{}{cite.#1}{#2}}}%
+\newcommand{\bibciteEXPL}[2]{%
+ \@newl@bel{b}{#1++EXPL}{\hyper@@link[cite]{}{cite.#1}{#2}}}%
+\newcommand{\bibciteIMPL}[2]{%
+ \@newl@bel{b}{#1++IMPL}{\hyper@@link[cite]{}{cite.#1}{#2}}}%
+\newcommand{\bibciteYEAR}[2]{%
+ \@newl@bel{b}{#1++YEAR}{\hyper@@link[cite]{}{cite.#1}{#2}}}%
+}{}
+
+\newcommand{\abntrefinfo}[3]{%
+ \if@filesw
+ {%
+ \let\protect\noexpand
+ \ifthenelse{\boolean{ABNThyperref}}{%
+ \immediate\write\@auxout{\string\bibciteEXPL{\abntnextkey}{#1}}%
+ \immediate\write\@auxout{\string\bibciteIMPL{\abntnextkey}{#2}}%
+ \immediate\write\@auxout{\string\bibciteYEAR{\abntnextkey}{#3}}}{%
+ \immediate\write\@auxout{\string\bibcite{\abntnextkey++EXPL}{#1}}%
+ \immediate\write\@auxout{\string\bibcite{\abntnextkey++IMPL}{#2}}%
+ \immediate\write\@auxout{\string\bibcite{\abntnextkey++YEAR}{#3}}}%
+ }%
+ \fi
+ \ifthenelse{\boolean{ABCIfoot}}
+ {\ifthenelse{\boolean{ABCItextondemand}}
+ {\@ifundefined{ABCIdemand@\abntnextkey}
+ {\let\ABCIprocesscitetext\@gobble}
+ {\let\ABCIprocesscitetext\ABCIgetcitetext}}
+ {\let\ABCIprocesscitetext\ABCIgetcitetext}}
+ {\ifthenelse{\boolean{ABCItextondemand}}
+ {\@ifundefined{ABCIdemand@\abntnextkey}
+ {\let\ABCIprocesscitetext\relax}
+ {\let\ABCIprocesscitetext\ABCIgetcitetextecho}}
+ {\let\ABCIprocesscitetext\ABCIgetcitetextecho}}%
+ \ABCIprocesscitetext
+}
+
+
+\newcommand{\ABCIdemand}[1]{\expandafter\gdef\csname ABCIdemand@#1\endcsname{}}
+
+
+\def\AbntCitetypeALF{alf}
+
+\let\ABCInewblock\newblock
+\DeclareRobustCommand{\newblock}{\ABCInewblock}
+
+
+%%%%%%%%%%%%%%%%%%%% abnt-alf %%%%%%%%%%%%%%%%%%%%%%%
+
+% the next line was before \ifthenelse{\equal{\AbntCitetype}{alf}}
+
+\setcitebrackets
+
+\ifx\AbntCitetype\AbntCitetypeALF % if alf
+
+ \renewcommand{\@biblabel}[1]{}
+
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % \cite[optional]{list of keys}
+ %
+ % Implicit citation - author in capital letters and year;
+ % mechanism to deal with repeated names;
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \renewcommand{\@cite}[2]%
+ {\citeopen{#1\ifthenelse{\equal{#2}{}}{}{,
+ {\optionaltextstyle#2}}}\citeclose}
+
+ \DeclareRobustCommand{\cite}[2][]{%
+ %
+ \leavevmode
+ \let\@citeprevious\@empty%
+ \@cite{%
+ \@for\@citekey:=#2\do% \@citekey contains the key
+ {%
+ \edef\@citekey{\expandafter\@firstofone\@citekey\@empty}%
+ %
+ % here, a tricky \let\@citename\"b@\@citekey++IMPL"
+ \expandafter\let\expandafter\@citename%
+ \csname b@\@citekey++IMPL\endcsname%
+ \expandafter\let\expandafter\@citeyear%
+ \csname b@\@citekey++YEAR\endcsname%
+ \ifx\@citeprevious\@empty%
+ \else%
+ \ifx\@citename\@citeprevious%
+ \ABCIcitecommadefault% echoing ", "
+ \else%
+ \ABCIcitecolondefault% echoing "; "
+ \fi%
+ \fi%
+ % writing on aux file
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citekey}}\fi%
+ % if undefined bibitem
+ \@ifundefined{b@\@citekey++IMPL}%
+ {% if undefined
+ {\bfseries??}% echoing ?
+ \G@refundefinedtrue%
+ \@latex@warning%
+ {Citation `\@citekey' on page \thepage \space undefined}%
+ }%
+ {% if already defined
+ \ifx\@citename\@citeprevious%
+ {\yearstyle\@citeyear\@}\@%
+ \else%
+ {\authorcapstyle\@citename}, %
+ {\yearstyle\@citeyear\@}%
+ \fi%
+ \let\@citeprevious\@citename%
+ }%
+ \ifthenelse{\boolean{ABNTbackref}}{\Hy@backout{#2}}{}% By AWSS: put backref
+ }% end for
+ }{#1}%
+ }
+
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % \citeonline[optional]{list of keys}
+ %
+ % Inline (explicit) citation - author in "inline style" and year;
+ % mechanism to deal with repeated names;
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \newcommand{\@citeonline}[2]%
+ {{#1\ifthenelse{\equal{#2}{}}{}{, {\optionaltextstyle#2}}}\citeclose}
+
+ \DeclareRobustCommand{\citeonline}[2][]{%
+ %
+ \leavevmode
+ \let\@citeprevious\@empty%
+ \@citeonline{%
+ \@for\@citekey:=#2\do%\@citekey contains the key
+ {%
+ \edef\@citekey{\expandafter\@firstofone\@citekey\@empty}%
+ %
+ % here, a tricky \let\@citename\"b@\@citekey++UP" :-)
+ \expandafter\let\expandafter\@citename%
+ \csname b@\@citekey++EXPL\endcsname%
+ \expandafter\let\expandafter\@citeyear%
+ \csname b@\@citekey++YEAR\endcsname%
+ \ifx\@citeprevious\@empty%
+ \else%
+ \ifx\@citename\@citeprevious%
+ \ABCIcitecommadefault% echoing ", "
+ \else%
+ \citeclose, % echoing "), "
+ \fi%
+ \fi%
+ % writing in aux file
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citekey}}\fi%
+ \@ifundefined{b@\@citekey++EXPL}%
+ {% if undefined
+ {\bfseries??}% echoing ?
+ \G@refundefinedtrue%
+ \@latex@warning%
+ {Citation `\@citekey' on page \thepage \space undefined}%
+ }%
+ {% if really defined
+ \ifx\@citename\@citeprevious%
+ \else%
+ {\authorstyle\@citename\@{}} \citeopen%
+ \fi%
+ {\yearstyle\@citeyear\@}%
+ \let\@citeprevious\@citename%
+ }%
+ \ifthenelse{\boolean{ABNTbackref}}{\Hy@backout{#2}}{}% By AWSS: put backref
+ }% end for
+ }{#1}%
+ }
+
+ % "overcite" compatibility
+ \let\citen\citeonline
+ \let\citenum\citeonline
+
+% end alf
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%% abnt-num %%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+
+\else % if not alf,
+
+ \ifABCIfoot
+
+ \renewenvironment{thebibliography}[1]{}{}
+
+ \citebrackets{}{}
+
+ \let\ABCIscriptfont\scriptsize
+ \renewcommand{\newblock}{}
+
+ \def\ABCI@cite#1#2{\raisebox{.8ex}%
+ {\ABCIscriptfont\citeopen{#1\if@tempswa, #2\fi}\citeclose}}
+
+ \def\ABCI@citeonline#1#2{{#1\if@tempswa, #2\fi}}
+
+ \DeclareRobustCommand\cite{%
+ \let\@cite\ABCI@cite%
+ \@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+
+ \DeclareRobustCommand\citeonline{%
+ \leavevmode\let\@cite\ABCI@citeonline%
+ \@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+
+ \def\@citex[#1]#2{%
+ \def\@safe@activesfalse{}%
+ \ABCIinitcitecomma%
+ \def\ABCIcitelist{}%
+ \def\ABCIaftercitex{}% to put the footnotes
+ \@cite{%
+ \@for\@citeb:=#2\do%
+ {%
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi%
+ \@ifundefined{b@\@citeb++IMPL}%
+ {%
+ {\bfseries??}%
+ \G@refundefinedtrue%
+ \@latex@warning%
+ {Citation `\@citeb' on page \thepage \space undefined}%
+ }%
+ {%
+ \@ifundefined{b@\@citeb}
+ {%
+ \stepcounter{footnote}%
+ \expandafter\xdef\csname b@\@citeb\endcsname{\thefootnote}%
+ \ABCItoken=\expandafter{\ABCIaftercitex}%
+ \xdef\ABCIaftercitex%
+ {\the\ABCItoken\noexpand\footnotetext%
+ {\noexpand\citetext{\@citeb}}}%
+ }
+ {}%
+ \expandafter\let\expandafter\ABCIcitation%
+ \csname b@\@citeb\endcsname%
+ % test for positive number
+ \ifcat _\ifnum\z@<0\ABCIcitation _\else A\fi
+ \ABCIaddtocitelist{\ABCIcitation}%
+ \else% else \ifcat
+ \ABCIcitecomma\hbox{\ABCIcitation}%
+ \fi% end \ifcat
+ }%
+ }%
+ \ABCIoutputgroupedcitelist%
+ }{#1}%
+ \ABCIaftercitex%
+ }
+
+ \newcommand{\citeifnotcited}[1]{%
+ \def\ABCIcitelist{}%
+ \@for\@citeb:=#1\do%
+ {%
+ \@ifundefined{b@\@citeb}
+ {\ABCIaddtocitelist{\@citeb}}
+ {}%
+ }%
+ \expandafter\cite\expandafter{\ABCIcitelist}%
+ }
+
+ \newcommand{\citeonlineifnotcited}[1]{%
+ \def\ABCIcitelist{}%
+ \@for\@citeb:=#1\do%
+ {%
+ \@ifundefined{b@\@citeb}
+ {\ABCIaddtocitelist{\@citeb}}
+ {}%
+ }%
+ \expandafter\citeonline\expandafter{\ABCIcitelist}%
+ }
+
+ \newcommand{\ABCIaddtocitelist}[1]{%
+ \ifthenelse{\equal{\ABCIcitelist}{}}%
+ {\edef\ABCIcitelist{#1}}
+ {\edef\ABCIcitelist{\ABCIcitelist,#1}}%
+ }%
+
+ \newcommand{\ifcited}[3]{\@ifundefined{b@#1}{#3}{#2}}
+
+ \else % if num and NOT foot
+
+ % this only works with proper settings in \ABCIthebibliformat
+ \ifthenelse{\boolean{ABCIbiblabelonmargin}}
+ {
+ \renewcommand{\@biblabel}[1]%
+ {\ifthenelse{\equal{#1}{}}{}{{\citenumstyle #1\hspace{\biblabelsep}}}}
+ }
+ {
+ \renewcommand{\@biblabel}[1]%
+ {%
+ \ifthenelse{\equal{#1}{}}
+ {}
+ {%
+ \def\biblabeltext{{\citenumstyle #1\hspace{\biblabelsep}}}%
+ \settowidth{\ABCIauxlen}{\biblabeltext}%
+ \ifthenelse{\lengthtest{\ABCIauxlen<\minimumbiblabelwidth}}
+ {\setlength{\ABCIauxlen}{\minimumbiblabelwidth-\ABCIauxlen}}
+ {\setlength{\ABCIauxlen}{0cm}}%
+ {\biblabeltext\hspace{\ABCIauxlen}}%
+ }%
+ }%
+ }
+
+ \let\ABCIscriptfont\scriptsize
+
+ \ifthenelse{\boolean{ABNTovercite}}{%
+ \def\ABCI@cite#1#2{\raisebox{1ex}%
+ {\ABCIscriptfont\citeopen{#1\if@tempswa, #2\fi}\citeclose}}}{%
+ \def\ABCI@cite#1#2{\citeopen{#1\if@tempswa, #2\fi}\citeclose}}
+
+ \def\ABCI@citeonline#1#2{{#1\if@tempswa, #2\fi}}
+
+ \DeclareRobustCommand\cite{%
+ \let\@cite\ABCI@cite%
+ \@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+
+ \DeclareRobustCommand\citeonline{%
+ \leavevmode\let\@cite\ABCI@citeonline%
+ \@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+
+% \renewcommand{\@openbib@code}%
+% {\setlength{\leftmargin}{0pt}\addtolength{\itemindent}{\labelsep}}
+
+
+ \def\@citex[#1]#2{%
+ \def\@safe@activesfalse{}%
+ \ABCIinitcitecomma%
+ \def\ABCIcitelist{}%
+ \@cite{%
+ \@for\@citeb:=#2\do%
+ {%
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi%
+ \@ifundefined{b@\@citeb}%
+ {%
+ {\bfseries??}%
+ \G@refundefinedtrue%
+ \@latex@warning%
+ {Citation `\@citeb' on page \thepage \space undefined}%
+ }%
+ {%
+ \expandafter\let\expandafter\ABCIcitation%
+ \csname b@\@citeb\endcsname%
+ % test for positive number
+ \ifcat _\ifnum\z@<0\ABCIcitation _\else A\fi
+ \ABCIaddtocitelist{\ABCIcitation}%
+ \else% else \ifcat
+ \ABCIcitecomma\hbox{\ABCIcitation}%
+ \fi% end \ifcat
+ }%
+ }%
+ \ABCIoutputgroupedcitelist%
+ }{#1}%
+ }
+
+ \newcommand{\ABCIaddtocitelist}[1]{%
+ \ifthenelse{\equal{\ABCIcitelist}{}}%
+ {\edef\ABCIcitelist{#1}}
+ {\edef\ABCIcitelist{\ABCIcitelist,#1}}%
+ }%
+
+
+ \fi
+\fi % end if alf
+
+\providecommand{\citeifnotcited}[1]{}
+\providecommand{\citeonlineifnotcited}[1]{}
+\providecommand{\ifcited}[3]{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \citeyear{list of keys}
+%
+% Citation by year
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\DeclareRobustCommand{\citeyear}[1]{%
+%
+% \let\@safe@activesfalse\@empty%
+ \leavevmode
+ \let\@citeprevious\@empty%
+ \@for\@citekey:=#1\do %\@citekey contains the key
+ {%
+% \edef\@citekey{\expandafter\@firstofone\@citekey\@empty}%
+ \expandafter\let\expandafter\@citename%
+ \csname b@\@citekey++YEAR\endcsname%
+ %compare previous name with current name and decide the punctuation marks
+ %if first use do nothing
+ \ifx\@citeprevious\@empty%
+ \else%
+ , % echoing ",
+ \fi%
+ % writing on aux file
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citekey}}\fi%
+ % if undefined bibitem
+ \@ifundefined{b@\@citekey++YEAR}%
+ {% if undefined
+ {\bfseries??}% echoing ?
+ \G@refundefinedtrue%
+ \@latex@warning%
+ {Citation `\@citekey' on page \thepage \space undefined}%
+ }%
+ {% if already defined
+ \ifx\@citename\@citeprevious%
+ \else%
+ {\@citename\@}%
+ \fi%
+ \let\@citeprevious\@citename%
+ }%
+ \ifthenelse{\boolean{ABNTbackref}}{\Hy@backout{#1}}{}% By AWSS: put backref
+ }% end for
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \citeauthor{list of keys}
+%
+% Implicit citation (capital letters)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+\DeclareRobustCommand{\citeauthor}[1]{%
+%
+% \let\@safe@activesfalse\@empty%
+ \leavevmode
+ \let\@citeprevious\@empty%
+ \@for\@citekey:=#1\do %\@citekey contains the key
+ {%
+% \edef\@citekey{\expandafter\@firstofone\@citekey\@empty}%
+ \expandafter\let\expandafter\@citename\csname b@\@citekey++IMPL\endcsname%
+ % writing on aux file
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citekey}}\fi%
+ % if undefined bibitem
+ \@ifundefined{b@\@citekey++IMPL}%
+ {% if undefined
+ {\bfseries??}%
+ \G@refundefinedtrue%
+ \@latex@warning%
+ {Citation `\@citekey' on page \thepage \space undefined}%
+ }%
+ {% if already defined
+ \ifx\@citename\@citeprevious%
+ \else%
+ \ifx\@citeprevious\@empty%
+ \else%
+ ; % echoing "; "
+ \fi%
+ {\authorcapstyle\@citename\@}%
+ \fi%
+ \let\@citeprevious\@citename%
+ }%
+ \ifthenelse{\boolean{ABNTbackref}}{\Hy@backout{#1}}{}% By AWSS: put backref
+ }% end for
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \citeauthoronline{list of keys}
+%
+% Explicit citation (non capital letter)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\DeclareRobustCommand{\citeauthoronline}[1]{%
+%
+% \let\@safe@activesfalse\@empty%
+ \leavevmode
+ \let\@citeprevious\@empty%
+ \@for\@citekey:=#1\do %\@citekey contains the key
+ {%
+% \edef\@citekey{\expandafter\@firstofone\@citekey\@empty}%
+ \expandafter\let\expandafter\@citename\csname b@\@citekey++EXPL\endcsname%
+ % writing on aux file
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citekey}}\fi%
+ % if undefined bibitem
+ \@ifundefined{b@\@citekey++EXPL}%
+ {% if undefined
+ {\bfseries??}%
+ \G@refundefinedtrue%
+ \@latex@warning%
+ {Citation `\@citekey' on page \thepage \space undefined}%
+ }%
+ {% if already defined
+ \ifx\@citename\@citeprevious%
+ \else%
+ \ifx\@citeprevious\@empty%
+ \else%
+ ; % echoing "; "
+ \fi%
+ {\authorstyle\@citename\@}%
+ \fi%
+ \let\@citeprevious\@citename%
+ }%
+ \ifthenelse{\boolean{ABNTbackref}}{\Hy@backout{#1}}{}% By AWSS: put backref
+ }% end for
+}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \citetext{list of keys}
+%
+% Text of the reference
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\DeclareRobustCommand{\citetext}[1]{%
+%
+% \let\@safe@activesfalse\@empty%
+ \leavevmode
+ \let\@citeprevious\@empty%
+ \@for\@citekey:=#1\do %\@citekey contains the key
+ {%
+% \edef\@citekey{\expandafter\@firstofone\@citekey\@empty}%
+ \expandafter\let\expandafter\@citename\csname b@\@citekey++TEXT\endcsname%
+ % writing on aux file
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citekey}}\fi%
+ \if@filesw\immediate\write\@auxout{\string\ABCIdemand{\@citekey}}\fi%
+ % if undefined bibitem
+ \@ifundefined{b@\@citekey++TEXT}%
+ {% if undefined
+ {\bfseries??}%
+ \G@refundefinedtrue%
+ \@latex@warning%
+ {Citation `\@citekey' on page \thepage \space undefined}%
+ }%
+ {% if already defined
+ \ifx\@citename\@citeprevious%
+ \else%
+ \relax
+ \ifx\@citeprevious\@empty%
+ \else%
+ ; % echoing "; "
+ \fi%
+ {\@citename}%
+ \fi%
+ \let\@citeprevious\@citename%
+ }%
+ \ifthenelse{\boolean{ABNTbackref}}{\Hy@backout{#1}}{}% By AWSS: put backref
+ }% end for
+}
+
+
+%
+% Setting up `recuo' (=indent in Portuguese)
+%
+
+% To ensure that the margin settings of this package works, \leftmargin
+% (inside thebibliography) must be 0cm. \@openbib@code is a hook inside
+% thebibliography.
+\let\@openbib@codeBACKUP\@openbib@code
+\def\@openbib@code{\@openbib@codeBACKUP\setlength{\leftmargin}{0cm}}
+
+
+% adding things after \begin{thebibliography}{}
+
+\let\thebibliographyBkUp\thebibliography
+\def\thebibliography#1{\thebibliographyBkUp{#1}\ABCIthebibliformat}
+
+%
+% \AfterTheBibliography{} hook
+%
+
+\newtoks\ABCItoken
+
+\newcommand{\ABCIthebiblihook}{}
+
+\newcommand{\AfterTheBibliography}[1]{
+ \ABCItoken=\expandafter{\ABCIthebiblihook}
+ \expandafter\def\expandafter\ABCIthebiblihook\expandafter{\the\ABCItoken#1}
+}
+
+
+\ifthenelse{\boolean{ABCIbibjustif}}
+ {}
+ {\AfterTheBibliography{\setlength{\rightskip}{0pt plus 2cm}}}
+
+\ifthenelse{\equal{\AbntCitetype}{alf}}
+ {% mode alf
+ \newcommand{\ABCIthebibliformat}{
+ \setlength{\leftskip}{\bibindent}
+ \setlength{\labelwidth}{0cm}
+ \setlength{\labelsep}{0cm}
+ \setlength{\itemindent}{-\bibindent}
+ \setlength{\listparindent}{0cm}
+ \ABCIthebiblihook
+ }
+ }
+ {% mode num
+ \ifthenelse{\boolean{ABCIbiblabelonmargin}}
+ {
+ \newcommand{\ABCIthebibliformat}{
+ \setlength{\leftskip}{\bibindent}
+ \setlength{\labelwidth}{10cm}
+ \setlength{\labelsep}{0cm}
+ \setlength{\itemindent}{-\bibindent}
+ \setlength{\listparindent}{0cm}
+ \setlength{\biblabelsep}{1.5ex}
+ \ABCIthebiblihook
+ }
+ }
+ {
+ \newcommand{\ABCIthebibliformat}{
+ \setlength{\leftskip}{\bibindent}
+ \setlength{\labelwidth}{0cm}
+ \setlength{\labelsep}{0cm}
+ \setlength{\itemindent}{-\bibindent}
+ \setlength{\listparindent}{0cm}
+ \setlength{\minimumbiblabelwidth}{\leftskip}
+ \ABCIthebiblihook
+ }
+ \AfterTheBibliography{
+ \ifthenelse{\lengthtest{\minimumbiblabelwidth=0pt}}
+ {\setlength{\biblabelsep}{1.8ex}}
+ {\setlength{\biblabelsep}{1ex}}
+ }
+ }
+ }
+
+
+
+
+%---------------------------------------------------------------%
+% Macros for output sorted and compressed numerical citations %
+%---------------------------------------------------------------%
+
+
+% Store to maximum of a given list to the counter "ABCImax"
+\newcommand{\maximuminlist}[1]{%
+ \setcounter{ABCImax}{0}%
+ \@for\ABCIaux:=#1\do%
+ {%
+ \setcounter{ABCIaux}{\ABCIaux}%
+ \ifnum \value{ABCIaux}>\value{ABCImax}%
+ \setcounter{ABCImax}{\value{ABCIaux}}%
+ \fi%
+ }%
+}
+
+% It takes a command containing a comma separeted list of
+% positive numbers and redefines the original command with
+% the list without its maximum element.
+\newcommand{\ABCIlistwithoutmaximum}[1]{%
+ \maximuminlist{#1}%
+ \let\ABCItemplist#1%
+ \def#1{}%
+ \def\ABCIcomma{}%
+ \@for\ABCIaux:=\ABCItemplist\do%
+ {%
+ \ifnum\ABCIaux<\value{ABCImax}%
+ \edef#1{#1\ABCIcomma\ABCIaux}%
+ \def\ABCIcomma{,}%
+ \fi%
+ }%
+}
+
+% It requires a command containing a comma separeted list of
+% positive numbers. It redefines that command with the same
+% list, but sorted.
+\newcommand{\ABCIsortlist}[1]{%
+ \edef\ABCItempslist{#1}%
+ \def#1{}%
+ \def\ABCIcomma{}%
+ \whiledo{\not\equal{\ABCItempslist}{}}%
+ {%
+ \maximuminlist{\ABCItempslist}%
+ \edef#1{\arabic{ABCImax}\ABCIcomma#1}%
+ \def\ABCIcomma{,}%
+ \ABCIlistwithoutmaximum{\ABCItempslist}%
+ }%
+}
+
+% \ifconsecutive{num1}{num2}{block1}{block2}
+% executes block1 if num1 = num2+1 and block2 otherwise.
+\newcommand{\ifconsecutive}[4]{%
+ \@tempcnta#1%
+ \@tempcntb#2%
+ \advance\@tempcntb 1 %
+ \ifnum\@tempcnta=\@tempcntb#3\else#4\fi%
+}
+
+%
+% It sorts and outputs in grouped way the list \ABCIcitelist generated in
+% \cite when in `num' mode.
+%
+\newcommand{\ABCIoutputgroupedcitelist}{%
+ \ifthenelse{\equal{\ABCIcitelist}{}}%
+ {}%
+ {%
+ \ABCIsortlist{\ABCIcitelist}%
+ \setcounter{ABCIaux}{0}%
+ \@for \ABCIaux:=\ABCIcitelist\do%
+ {%
+ \ifthenelse{\value{ABCIaux}=0}%
+ {%
+ \let\ABCIfirst\ABCIaux%
+ \let\ABCIlast\ABCIaux%
+ \setcounter{ABCIaux}{1}%
+ }%
+ {%
+ \ifconsecutive{\ABCIaux}{\ABCIlast}%
+ {%
+ \let\ABCIlast\ABCIaux%
+ \addtocounter{ABCIaux}{1}%
+ }%
+ {%
+ \ifthenelse{\value{ABCIaux}=1}%
+ {%
+ \ABCIcitecomma\ABCIfirst%
+ }%
+ {%
+ \ifthenelse{\value{ABCIaux}=2}%
+ {%
+ \ABCIcitecomma\ABCIfirst%
+ \ABCIcitecomma\ABCIlast%
+ }%
+ {%
+ \ABCIcitecomma\ABCIfirst--\ABCIlast%
+ }%
+ }%
+ \let\ABCIfirst\ABCIaux%
+ \let\ABCIlast\ABCIaux%
+ \setcounter{ABCIaux}{1}%
+ }%
+ }%
+ }%
+ \ifthenelse{\value{ABCIaux}=1}%
+ {%
+ \ABCIcitecomma\ABCIfirst%
+ }%
+ {%
+ \ifthenelse{\value{ABCIaux}=2}%
+ {%
+ \ABCIcitecomma\ABCIfirst%
+ \ABCIcitecomma\ABCIlast%
+ }%
+ {%
+ \ABCIcitecomma\ABCIfirst--\ABCIlast%
+ }%
+ }%
+ }%
+}
+
+\newcommand{\apudname}{apud}
+\newcommand{\Idemname}{Id.}
+\newcommand{\Ibidemname}{Ibid.}
+\newcommand{\opcitname}{op.\ cit.}
+\newcommand{\passimname}{passim}
+\newcommand{\loccitname}{loc.\ cit.}
+\newcommand{\cfcitename}{Cf.}
+\newcommand{\etseqname}{et seq.}
+
+\DeclareRobustCommand{\footciteref}[1]{%
+\footnote{\citetext{#1}}
+}
+
+\newcommand{\apud}[3][]{(\citeauthor{#2}, \citeyear{#2} \apudname\ %
+\citeauthor{#3}, \citeyear{#3}%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1})}
+
+\newcommand{\apudonline}[3][]{\citeauthoronline{#2} (\citeyear{#2} \apudname\ %
+\citeauthor{#3}, \citeyear{#3}%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1})}
+
+\newcommand{\Idem}[2][]{\Idemname, \citeyear{#2}%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1}}
+
+\newcommand{\Ibidem}[2][]{\Ibidemname%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1}}
+
+\newcommand{\opcit}[2][]{\citeauthor{#2}, \opcitname%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1}}
+
+\newcommand{\passim}[2][]{\citeauthor{#2}, \citeyear{#2}%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1}, \passimname}
+
+\newcommand{\loccit}[2][]{\citeauthor{#2}, \citeyear{#2}%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1}, \loccitname}
+
+\newcommand{\cfcite}[2][]{\cfcitename\ \citeauthor{#2}, \citeyear{#2}%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1}}
+
+\newcommand{\etseq}[2][]{\citeauthor{#2}, \citeyear{#2}%
+\ifthenelse{\equal{#1}{\empty}}{}{, #1}, \etseqname}
+
+\ifthenelse{\equal{\AbntCitetype}{num}}%
+{\renewcommand{\citeauthor}[1]{\citeauthoronline{#1}\cite{#1}}}{}
+
+
+\endinput
+
+