Biblatex: цитата появляется с разными ссылочными знаками

Biblatex: цитата появляется с разными ссылочными знаками

Я пишу отчет и использую biblatexс biblatex-chemпакетом, и использую \fullfootciteкоманду из-за интеграции со сносками. Однако я заметил, что

  1. Если одна и та же ссылка вызывается более одного раза, она будет отображаться с разными номерами ссылок и дважды в нижнем колонтитуле;
  2. Несмотря на то, что я использую эту autopunct=trueопцию, цитата в тексте все равно появляется перед запятой, а не после нее, как должно быть.

    \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}
    

решение1

Перемещает только \autociteконечные знаки препинания. chem-acsСтиль загружает параметры настройки autopunct=trueи autocite=superscript. Таким образом, вы можете добиться желаемого вывода встроенной цитаты с помощью \autociteвместо \footfullcite. Для сносок вы можете переопределить \superciteна \superfullciteиздругой стиль цитирования Джозефа Райта.

\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}

Вот результат для первой страницы:

введите описание изображения здесь

И второе:

введите описание изображения здесь

Обратите внимание, что это позволяет избежать повторных ссылок на сноски, печатая сноску только при первом цитировании записи. Печать сносок не более одного раза на каждой страницеможет быть сделано, но решение довольно запутанное.

\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}

Вот результат для первой страницы:

введите описание изображения здесь

И второе:

введите описание изображения здесь

Связанный контент