보고서를 작성하고 패키지 biblatex
와 함께 사용하고 있으며 biblatex-chem
, \fullfootcite
각주와의 통합 때문에 명령어를 사용하고 있습니다. 그러나 나는 그것을 알아 차렸다.
- 동일한 참조가 두 번 이상 호출되면 바닥글에 다른 참조 번호와 두 번 표시됩니다.
옵션 을 사용했음에도 불구하고
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
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}
첫 번째 페이지의 출력은 다음과 같습니다.
그리고 두 번째:
이렇게 하면 항목이 처음 인용될 때만 각주를 인쇄하여 각주 반복 인용을 방지할 수 있습니다. 모든 페이지에 최대 한 번 각주 인쇄할 수 있다, 그러나 해결책은 상대적으로 지저분합니다.
\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}
첫 번째 페이지의 출력은 다음과 같습니다.
그리고 두 번째: