Estou escrevendo um relatório e usando biblatex
com o biblatex-chem
pacote, e usando o \fullfootcite
comando por causa da integração com notas de rodapé. No entanto eu notei isso
- Se a mesma referência for chamada mais de uma vez, aparecerá com números de referência diferentes e duas vezes no rodapé;
apesar de eu usar a
autopunct=true
opção, a citação no texto ainda aparece antes da vírgula e não depois como deveria.\documentclass[11pt,a4paper]{memoir} \usepackage[backend=biber,style=chem-acs,subentry,minnames=3,maxnames=100,autopunct=true]{biblatex} \bibliography{bibli} \begin{document} A procedure\footfullcite{Harjani:2009hd}, which was reported. The same procedure\footfullcite{Harjani:2009hd} applied with another product. \end{document}
Responder1
Move apenas \autocite
a pontuação final. O chem-acs
estilo carrega as configurações de opção autopunct=true
e autocite=superscript
. Assim, você pode obter a saída de citação inline desejada com \autocite
em vez de \footfullcite
. Para as notas de rodapé você pode redefinir \supercite
para \superfullcite
deoutro estilo de citação de Joseph Wright.
\documentclass{article}
\usepackage[style=chem-acs,subentry,citetracker]{biblatex}
\usepackage[colorlinks]{hyperref}
\makeatletter
% http://www.texdev.net/2010/03/08/biblatex-numbered-citations-as-footnotes/
\DeclareCiteCommand{\supercite}[\cbx@superscript]%
{\usebibmacro{cite:init}%
\let\multicitedelim=\supercitedelim
\iffieldundef{prenote}{}{\BibliographyWarning{Ignoring prenote argument}}%
\iffieldundef{postnote}{}{\BibliographyWarning{Ignoring postnote argument}}}
{\usebibmacro{citeindex}%
\usebibmacro{superfullcite}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}}
\newbibmacro*{superfullcite}{%
\ifciteseen{}{\xappto\cbx@citehook{%
\noexpand\footnotetext[\thefield{labelnumber}]{\fullcite{\thefield{entrykey}}.}}}}
\newrobustcmd{\cbx@superscript}[1]{%
\mkbibsuperscript{#1}%
\cbx@citehook
\global\let\cbx@citehook=\empty}
\let\cbx@citehook=\empty
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\null\vfill\noindent
New citation \autocite{stdmodel}.
New and recurrent citations \autocite{stdmodel,companion}.
\clearpage
\null\vfill\noindent
New citation \autocite{ctan}.
Recurrent citations from previous and current pages \autocite{companion,glashow,ctan}.
\clearpage
\printbibliography
\end{document}
Aqui está a saída da primeira página:
E o segundo:
Observe que isso evita citações recorrentes de notas de rodapé, imprimindo a nota de rodapé apenas na primeira vez que a entrada é citada. Imprimir as notas de rodapé no máximo uma vez em cada páginapode ser feito, mas a solução é relativamente confusa.
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=chem-acs,subentry,citetracker,pagetracker=page]{biblatex}
\usepackage[colorlinks]{hyperref}
\makeatletter
% user-level citation command
\DeclareCiteCommand{\supercite}[\cbx@superscript]
{\usebibmacro{cite:init}%
\let\multicitedelim\supercitedelim
\iffieldundef{prenote}{}{\BibliographyWarning{Ignoring prenote argument}}%
\iffieldundef{postnote}{}{\BibliographyWarning{Ignoring postnote argument}}}
{\usebibmacro{citeindex}%
\usebibmacro{cite:super:foot}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}}
% save current and last inline instcount, save key if seen first on page
\newbibmacro*{cite:super:foot}{%
\xdef\cbx@key{\thefield{entrykey}}%
\ifsamepage{\value{instcount}}{\csuse{cbx@instcount@\cbx@key}}{}{%
\listxadd{\cbx@savelist}{\cbx@key}%
\ifnumequal{\value{cbx@tempcntd}}{0}{%
\defcounter{cbx@tempcntc}{\value{instcount}}%
\loop\ifnum\value{cbx@tempcntc}>0
\ifsamepage{\value{instcount}}{\value{cbx@tempcntc}}
{\ifcsundef{blx@fnpage@\number\numexpr\value{cbx@tempcntc}}
{\setcounter{cbx@tempcntd}{\value{cbx@tempcntc}}}{}%
\stepcounter{cbx@tempcntc}}
{\setcounter{cbx@tempcntc}{0}}%
\repeat}{}}%
\csnumgdef{cbx@instcount@\cbx@key}{\value{instcount}}}
\let\cbx@savelist\@empty
\newcounter{cbx@tempcntc}
\newcounter{cbx@tempcntd}
\setcounter{cbx@tempcntd}{0}
\newrobustcmd*{\cbx@superscript}[1]{%
\global\toggletrue{cbx@supercite}
\mkbibsuperscript{#1}%
\cbx@footnote%
\global\togglefalse{cbx@supercite}}
\let\cbx@savelist\@empty
\newtoggle{cbx@supercite}
\AtEveryCitekey{%
\ifciteseen{}{\csnumgdef{cbx@instcount@\thefield{entrykey}}{-1}}%
\iftoggle{cbx@supercite}{}{\cbx@footnote}}
\AtEveryBibitem{\cbx@footnote}
\AtEveryLositem{\cbx@footnote}
% defer citation footnotes to last inline reference instance on page
\newrobustcmd*{\cbx@footnote}{%
\ifboolexpr{ not test {\ifdefempty{\cbx@savelist}}
and test {\ifnumequal{\value{instcount}}{\value{cbx@tempcntd}}} }
{\cbx@sortlist@init%
\let\do\cbx@do
\dolistloop{\cbx@sortlist}%
\global\let\cbx@savelist\@empty
\setcounter{cbx@tempcntd}{0}}{}}
% print footnotes in 'sorting' order
\def\cbx@do#1{%
\ifinlist{#1}{\cbx@savelist}
{\begingroup
\blx@resetdata
\blx@getdata@cite{#1}%
\blx@setoptions@type\abx@field@entrytype
\blx@setoptions@entry
\blx@execute
\blx@beglang
\iffieldundef{shorthand}
{\gdef\@thefnmark{\printfield{labelprefix}\printfield{labelnumber}}}
{\gdef\@thefnmark{\printfield{shorthand}}}%
\gappto\@thefnmark{\blx@initunit}%
\ifhyperref
{\H@@footnotetext{\blx@driver\abx@field@entrytype}}
{\@footnotetext{\blx@driver\abx@field@entrytype}}%
\blx@endlang
\endgroup}
{}}
% access internal list of sorted entry keys
\def\cbx@sortlist@init{%
\global\letcs{\cbx@sortlist}
{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}
\let\cbx@sortlist\@empty
\makeatother
\addbibresource{biblatex-examples.bib}
\renewcommand*{\thefootnote}{\fnsymbol{footnote}}
\begin{document}
\null\vfill\noindent
New citation \autocite{stdmodel}.
New and recurrent citations \autocite{stdmodel,companion}.
Vanilla footnote with citation.\footnote{Following \textcite{weinberg}...}
\clearpage
\null\vfill\noindent
New citation \autocite{ctan}.
Recurrent citations from previous and current pages \autocite{companion,glashow,ctan}.
\clearpage
\printbibliography
\end{document}
Aqui está a saída da primeira página:
E o segundo: