1350 lines
40 KiB
TeX
1350 lines
40 KiB
TeX
%% abntex2cite.sty, v<VERSION> laurocesar
|
|
%% Copyright 2012-<COPYRIGHT_YEAR> 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}[<CURRENT_DATE> v<VERSION> 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
|
|
|
|
|