我在尝试让 citekey 在 blockcitation 中正常工作时遇到了问题。我通过 subfiles 包设置了一个嵌套文件,并使用 csquotes 生成块引用,如下所示:
在子文件中我有以下设置:
\documentclass[draft,../../main.tex]{subfiles}
\begin{document}
\begin{displayquote}[\cite[235]{SomeOne}]
Something smart.
\end{displayquote}
\end{document}
在主文档中我已加载 csquotes 包,如下所示:
\documentclass[12pt,a4paper,twoside,openright,draft]{memoir}
% more preamble
\usepackage{csquotes}
\usepackage[
backend=biber,
style=authoryear-icomp,
maxcitenames=2,
sorting=nyt
]{biblatex}
\begin{document}
\subfile{sub.tex}
\end{document}
现在,当我编译主文件或子文件时,出现以下错误消息:
!扫描 \blx@citeargs@i 的使用时文件结束。 \par sub.tex 我怀疑您现在忘记了
}', causing me to read past where you wanted me to stop. I'll try to recover; but if the error is serious, you'd better type
E' 或 `X' 并修复您的文件。 !紧急停止。sub.tex(作业中止,未找到合法的 \end)
如果我省略上述参数中的后注“[235]” \cite
,错误消息就会消失。除了没有后注也能编译正常之外,我搞不清楚到底发生了什么。我看不出是语法错误还是发生了什么。我按照描述做了这里,但显然不是这样。顺便说一句,在我的 bibfile 中引用的条目,我没有放任何页码信息或任何东西,我不知道这是否是导致错误消息的原因?
任何帮助深表感谢!
答案1
您的代码中的问题在于这一行:
\begin{displayquote}[\cite[235]{westfahl:space}]
这里的问题是 LaTeX 无法找到相应的闭合]
和}
。为了避免这个问题,只需将参数[...]
用自己的分组对括起来即可{..}
。结果:
\begin{displayquote}[{\cite[235]{westfahl:space}}]
% ^^ ^^
请查看我为使您的代码可编译而进行的其他更改。请将我的 MWE 与您的代码进行比较并研究更改... 因此,使用以下可编译的 MWE(使用包filecontents
将所有文件包含在一个可编译的 MWE 中):
\RequirePackage{filecontents}
\begin{filecontents}{\jobname-sub.tex}
\documentclass[\jobname.tex]{subfiles}
\begin{document}
\cite[235]{westfahl:space}
\begin{displayquote}[{\cite[235]{westfahl:space}}]
Something smart.
\end{displayquote}
\end{document}
\end{filecontents}
\documentclass[12pt,a4paper,twoside,openright,draft]{memoir}
% more preamble
\usepackage{subfiles}
\usepackage{csquotes}
\usepackage[%
backend=biber,
style=authoryear-icomp,
maxcitenames=2,
sorting=nyt,
]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
Test
\subfile{319085-sub}
Test
\end{document}
得到结果: