在此邮政\autocap{s}ee
我得到了在引文中使用建议,例如\autocite[\autocap{s}ee][5][ref]
将字母“s”的上下文相关大写。因此,如果我从内联引文切换到脚注引文,单词“see”将被写为“See”。
但是把所有参考文献都写进去有点麻烦\autocap
。有没有办法把这个命令集成到例如\usebibmacro{pre note}
或创建一个新的 bibmacro 中,例如prenotecap
?然后我会定义:
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenotecap}}
{\usebibmacro{citeindex}%
\printtext[brackets]{\usebibmacro{cite} \usebibmacro{postnote}}}
{\multicitedelim}
{}
我就完成了。
如果有人能提示如何管理,那就太好了\newbibmacro
,因为我在 biblatex 用户指南中找不到相关解释。
编辑:
因此,这里有一个 MWE,它应该清楚地说明我想要实现的目标。如果我使用,单词“see”应该打印为“See”,autocite=footnote
如果我使用,则打印为“see” autocite=inline
。但我不想\autocap
对每个参考都使用。
\documentclass{article}
\usepackage[style=alphabetic, autocite=footnote]{biblatex}
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[brackets]{\usebibmacro{cite} \usebibmacro{postnote}}}
{\multicitedelim}
{}
\DeclareMultiCiteCommand{\footcites}[\mkbibfootnote]%
{\footcite}{\multicitedelim}
\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites}
\begin{filecontents*}{bibliography.bib}
@BOOK{Cornelisse1979,
author = {Cornelisse, J. W. and Schöyer, H. Ferry R. and Wakker, Karel F.},
title = {Rocket Propulsion and Spaceflight Dynamics},
year = {1979},
publisher = {Pitman},
}
\end{filecontents*}
\bibliography{bibliography.bib}
\begin{document}
\null
\vfill
How the citation look like: \autocite[see][35]{Cornelisse1979}
How it should look like: \autocite[\autocap{s}ee][35]{Cornelisse1979}
\end{document}
答案1
该biblatex
包定义了一个\MakeSentenceCase
宏来处理大写问题,您只需告诉 bibmacro 使用它即可。我首先定义一个字段格式\MakeSentenceCase
,然后修补 bibmacro 以将字段格式与字段一起使用prenote
。我使用xpatch
包来执行此操作,但修补宏的方法有很多。您只需在使用时将以下代码添加到您的序言中即可autocite=footnote
。
\DeclareFieldFormat{sentencecase}{\MakeSentenceCase{#1}}
\usepackage{xpatch}
\xpatchbibmacro{prenote}{\printfield{prenote}}{\printfield[sentencecase]{prenote}}{}{}
使用 时,您必须删除代码autocite=inline
。可能有一种方法可以根据 的值自动执行此操作autocite
,但我不明白如何使用该选项。
完整的 MWE:
\documentclass{article}
\usepackage[style=alphabetic, autocite=footnote]{biblatex}
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[brackets]{\usebibmacro{cite} \usebibmacro{postnote}}}
{\multicitedelim}
{}
\DeclareFieldFormat{sentencecase}{\MakeSentenceCase{#1}}
\usepackage{xpatch}
\xpatchbibmacro{prenote}{\printfield{prenote}}{\printfield[sentencecase]{prenote}}{}{}
\DeclareMultiCiteCommand{\footcites}[\mkbibfootnote]%
{\footcite}{\multicitedelim}
\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites}
\begin{filecontents*}{bibliography.bib}
@BOOK{Cornelisse1979,
author = {Cornelisse, J. W. and Schöyer, H. Ferry R. and Wakker, Karel F.},
title = {Rocket Propulsion and Spaceflight Dynamics},
year = {1979},
publisher = {Pitman},
}
\end{filecontents*}
\bibliography{bibliography.bib}
\begin{document}
\null
\vfill
How the citation look like: \autocite[see][35]{Cornelisse1979}
How it should look like: \autocite[\autocap{s}ee][35]{Cornelisse1979}
\end{document}