我遵循的引用指南要求prenote
在适用“ibid”的情况下,将“ibid”文字放在“Ibid”文字之后。
例如:
s 1 Really Awesome Statute.
s 3 Ibid demonstrates awesome stuff << wrong
Ibid s 3 demonstrates awesome stuff << correct
我正尝试通过改变命令来实现这一点footcite
。
该命令最初定义为:
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\bibsentence
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
我正在尝试使用:
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{
\bibsentence
\ifthenelse{\shoulddoibid}{%
}{%
\usebibmacro{prenote}
}
}
{
\usebibmacro{citeindex}%
\usebibmacro{cite}
}
{
\multicitedelim
}
{
\ifthenelse{\shoulddoibid}{%
\usebibmacro{prenote}
}{%
}
\usebibmacro{cite:postnote}
}
和
\newcommand{\shoulddoibid}{\ifciteibid\AND\NOT\iffirstonpage}
然而,这似乎完全打破了footcite
:
- 我得到很多
∆=∆
符号(例如Ibid ∆=∆, 293
) Ibid
出现在错误的位置prenote
并且即使没有定义也会cite:postnote
被替换∆=∆
我猜测我的问题出在 的定义上shoulddoibid
,或者出在DeclareCiteCommand
(可能是后者)。
有人有什么想法吗?
答案1
问题是它\shoulddoibid
不起作用。
我查看了 biblatex 手册,结果发现这iffirsonpage
是依赖于上下文的。
我认为解析器是在的上下文中对其进行评估\newcommand
,使其成为文字,而不是按照预期每次对其进行评估。
我添加了最后的命令以便有人发现它有用。
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{%
\togglefalse{hasibid}%
\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}{%
\toggletrue{hasibid}%
}{%
\bibsentence%
\usebibmacro{prenote}%
}%
}%
{%
\usebibmacro{citeindex}%
\usebibmacro{cite}%
}%
{%
\multicitedelim%
}%
{%
\iftoggle{hasibid}{%
\usebibmacro{prenote}%
}{%
}%
\usebibmacro{cite:postnote}%
}