兼容性 parnotes – csquotes:有些内容排版两次 — 自动解决的方法

兼容性 parnotes – csquotes:有些内容排版两次 — 自动解决的方法

如果您想引用带有脚注的文本,并希望将注释放置/定位在引用段落之后: - 它与,...
配合得很好- 它与,... 配合得不太好\enquote\textquote
\blockquote\foreignblockquote

实际上,为了检查文本是否大于阈值,文本会排版在一个框中,然后在文档中第二次排版(内联或作为不同的段落,取决于文本的大小)。因此 parnotes 出现了两次。

症状
- 代码:

\documentclass[french, a4paper, 12pt, onecolumn, twoside, final]{book} 
%Options notitlepage, openany
\usepackage[autostyle]{csquotes}
\usepackage[narrower, breakwithin, indentafter]{parnotes}
\begin{document}
\blockquote[\footnote{Bruno Blanckeman}]{« Des légistes expertisent sa
    disparition : le roman français est mort depuis…, depuis…, depuis…
    \parnote{Au choix : Jean-Paul Sartre, Honoré de Balzac, Chrétien de Troyes} »}
\end{document}

— 在文件中,在段落下方,您会看到:
1. Au choix : Jean-Paul Sartre, Honoré de Balzac, Chrétien de Troyes
2. Au choix : Jean-Paul Sartre, Honoré de Balzac, Chrétien de Troyes

作为一个解决方法,你可以修改 csquote 的 sty 文件,或者 patch \csq@bquote@i 宏。
添加这一行:

\def\parnote{}

在此之后:

\setbox\@tempboxa=\vbox{

注意,进行上述修改之前必须已经加载parnotes包。

找到这个花了很长时间,很痛苦。但真的很有趣!我又学了一点 TeX。csquote 包的代码对我来说仍然很模糊……

所以问题是:自动启用这两个包之间的兼容性的最佳方法是什么(这样就不需要知道这个解决方法了)?该告诉维护人员什么?兼容性问题通常如何解决?这些是最佳方法还是推荐方法?在这里,代码可以改进吗?或者我们需要在 csquotes 中检查 parnotes 包是否已加载?

你能回答针对这个特定问题的问题吗(然后以一般的方式回答是否有话要说)?

谢谢

答案1

解决方法我用了:

\makeatletter
\patchcmd% No prefix []
  {\csq@bquote@i}% <cmd>
  {\csuse{csq@bcount@\csq@thresholdtype}}% <search>
  {\def\parnote{}%
    \csuse{csq@bcount@\csq@thresholdtype}}% <replace>
  {}{}% <success><failure>
\makeatother

但现在情况好多了,感谢罗伯特:

\makeatletter
\BlockquoteDisable{\let\parnote\@gobble}
\makeatother

我所描述的问题已在 csquotes 中记录,§11.3。

浪费了这么多时间!我希望这个兼容性问题能够得到解决,只需加载 2 个软件包即可,节省您的时间……

相关内容