包引用和 \chapter

包引用和 \chapter

我用quoting包来设置我的硕士论文中的引用。在以下 MWE 中,我发现了一个奇怪的错误。

\documentclass[12pt,a4paper]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{quoting}
\usepackage{blindtext}
\begin{document}
\blindtext
\begin{quoting}[font={small}]
\blindtext
\end{quoting}
\blindtext

\chapter{Test}
\blindtext
\begin{quoting}[font={small}]
\blindtext
\end{quoting}
\blindtext
\end{document}

代码产生错误

\do 未定义。\begin{quoting}[font={small}]

当将其font={small}设置为包选项时,不会发生该错误。

我该如何修复它?

MWE 在writelatex.com

答案1

\do是一个“临时”控制序列,在 LaTeX 的内部宏中很多地方使用。

通常它在文档开头有一个定义,没有人应该依赖它,但是当类是时,这种情况不会发生scrreprt;问题是typearea.sty在第 206 行,说\let\do\relax

quoting不幸的是,\renewcommand*{\do}{...}并且,根据 留下的设置typearea,这是非法的。

解决这个问题的唯一方法是重新定义引用中的几个键:

\documentclass[12pt,a4paper]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{quoting}
\makeatletter
\define@key{quo}{font}{%
  \def\quotingfont{}%
  \def\do##1{\appto{\quotingfont}{\csname ##1\endcsname}}%
  \docsvlist{#1}%
}
\define@key{quo}{font+}{%
  \def\do##1{\appto{\quotingfont}{\csname ##1\endcsname}}%
  \docsvlist{#1}%
}
\makeatother


\usepackage{blindtext}

\begin{document}
\blindtext
\begin{quoting}[font={small}]
\blindtext
\end{quoting}
\blindtext

\chapter{Test}
\blindtext
\begin{quoting}[font={small}]
\blindtext
\end{quoting}
\blindtext
\end{document}

这样是否\do定义就变得不重要了。\def可以使用

\define@key{quo}{font}{%
  \def\quotingfont{}%
  \providecommand{\do}{}%
  \renewcommand*{\do}[1]{\appto{\quotingfont}{\csname ##1\endcsname}}%
  \docsvlist{#1}%
}

但是,因为\do无论如何都要重新定义,所以使用\def更容易。

请向 Thomas Tietze(又名 Lockstep)提交错误报告。

相关内容