tufts-book 类提供了一个\sidenote
带有可选偏移参数的 -command,允许垂直调整侧注。我使用 biblatex\footcite
命令来获取页边距中的引文。如果引文靠近底部,则引文位于文本下方或超出页面范围(代码稍后发布):
使用来自的答案这个问题我添加了一个引用命令,允许手动偏移边距引用:
问题是
- 您需要根据基线跳过和引用行数手动计算偏移量
- 引文标记和(可选)标点符号之间的字距调整无法通过 fnpct 处理
tufte-latex 文档指出,当侧注超出页面顶部或底部时,会专门添加 -command 的偏移参数\sidenote
,因此我认为不可能将侧注限制在文本高度。
我的问题:是否有可能有一个引用命令
- 可以使用 fnpct 调整字距
- 导致边注引用
- 可以传递偏移参数(或适当调整其垂直偏移)
如果不是,我目前的方法需要传递一个可选的标点符号,引用标记应该与该标点符号对齐。语法相当混乱(见以下代码)。有人有更好的主意吗?
\documentclass[a4paper,nobib]{tufte-book}
\usepackage[autocite=footnote,style=verbose,backend=biber]{biblatex}
\usepackage{xparse}
\usepackage{xpatch}
\DeclareCiteCommand{\sidecitehelper}
{\usebibmacro{prenote}\toggletrue{blx@footnote}}
{\usebibmacro{citeindex}\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\newlength{\spc}
\DeclareDocumentCommand{\sjcitep}{ O{} O{0pt} m O{} }{%
\settowidth{\spc}{#4}%
\addtolength{\spc}{-1.8\spc}%
#4\hspace*{\spc}\sidecite<#2>[#1]{#3}%
}
\ExplSyntaxOn
\NewDocumentCommand\sidecite{D<>{}O{}omo}{%
\iftoggle{blx@footnote}%
{\cs_set_protected_nopar:Npn \__sct_wrapper:nn ##1 ##2 {\mkbibparens{##2}}}%
{\cs_set_protected_nopar:Npn \__sct_wrapper:nn ##1 ##2 {\sidenote[][##1]{##2}}}%
{\IfNoValueTF{#3}%
{\__sct_wrapper:nn{#1}{\sidecitehelper[#2]{#4}}}%
{\__sct_wrapper:nn{#1}{\sidecitehelper[#2][#3]{#4}}}}%
}
\ExplSyntaxOff
\makeatletter
\xpatchcmd{\@footnotetext}%
{\color@begingroup}
{\color@begingroup\toggletrue{blx@footnote}}
{}
{}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\vspace*{\fill}
Margin baselineskip: {\footnotesize\the\baselineskip}\\
Baselineskip: \the\baselineskip\\
Test sentence\sjcitep[6][-42pt]{springer}[.]
Test sentence\sjcitep[][-16pt]{springer}[,]
Test sentence\sjcitep[][-10pt]{springer} and so on and so on.
\end{document}
附言:我知道我的问题不够简洁。我很抱歉。我不太了解 LaTeX,并且想避免用 替换所有\footcite{}<punctuation>
-commands \sjcitep{}[<punctuation>]
。
答案1
我认为五年前提出这个问题时没有一个简单的解决方案。今天你可能会想到这样的事情:
\documentclass[a4paper,nobib]{tufte-book}
\usepackage[style=verbose]{biblatex}
\usepackage{fnpct}
\setfnpct{
after-punct-space = 0pt ,
before-footnote-space = .1em
}
\addbibresource{biblatex-examples.bib}
\NewDocumentCommand\sidecite{d()oom}{%
\IfNoValueTF{#1}
{\sidenote}
{\sidenote[][#1]}%
{%
\IfNoValueTF{#2}
{\cite{#4}}
{%
\IfNoValueTF{#3}
{\cite[#2]{#4}}
{\cite[#2][#3]{#4}}%
}%
}%
}
\begin{document}
\vspace*{\fill}
Test sentence\sidecite(-44pt){companion}.
Test sentence\sidecite(-12pt)[see][135]{companion},
Test sentence\sidecite{companion} and so on and so on.
\end{document}
由于biblatex
它相当复杂,所以我无法说它是否存在缺点。