在排版一本书的最后几步,我遇到了一个非常棘手的问题,幸运的是,我设法在 MWE 中将其隔离。问题是,使用 relsize 修补的块引用的文本大小略有减小(在我看来,下一个较小的“tex 大小”对于书籍格式来说太小了)会导致前一段的行距减小 - 如果代码中 \begin{quote} 之前没有空行。
遵循 MWE 有更明显的值来显示效果。请注意代码中空行的差异以及第 1 段和第 2 段的改变结果。当 relsize 为 .9 时(如真实情况),它几乎不可见。
这是否意味着修补会以某种方式影响前一段?这似乎是一个错误,因为它只影响行距,而不影响文本大小。
Texlive/Xetex 也出现过此问题,但 Overleaf/Latex 也出现过同样的问题。这个问题似乎与 relsize 部分有关,因为我使用 setspace/setstretch 也得到了类似的结果。
我希望得到一些关于哪里出了问题的反馈,因为我担心类似的问题也可能发生在其他情况下,而我可能还没有注意到它们。
\documentclass[fontsize=11.5pt,twoside]{scrreprt}
\usepackage{blindtext}
\usepackage{etoolbox}
\usepackage{relsize}
\linespread{1.8} %for effect
\AtBeginEnvironment{quote}{\relscale{.3}} %smaller than real, also for effect
\begin{document}
\subsection{problem}
\blindtext
\begin{quote}
\blindtext
\end{quote}
\blindtext
\begin{quote}
\blindtext
\end{quote}
\blindtext
\end{document}
答案1
你的补丁是错误的。你实际上添加了 \relsize前报价单。
试用
\AtBeginEnvironment{quote}{\relscale{.3}xxxxx}
看看我的意思。
更好地利用
\appto\quote{\relscale{.3}}
答案2
更改字体大小时,需要结束段落。如果不这样做,则\baselineskip
确定行距的 将会对一种或多种尺寸不正确。这是因为某些设置(包括此设置)会应用于整个段落,并且仅在段落结束时才应用。因此,\baselineskip
段落所有部分的 都由段落结束时当前活动的 决定\baselineskip
。
因此,可以通过插入一些段落分隔符来避免此问题。如果您不想实际使用段落分隔符,请使用\noindent
来避免首行缩进。
\documentclass[fontsize=11.5pt,twoside]{scrreprt}% note that this means 12pt font is used
\usepackage{blindtext}
\usepackage{etoolbox}
\usepackage{relsize}
\linespread{1.8} %for effect - note that you really, really, really shouldn't do this like this
\AtBeginEnvironment{quote}{\relscale{.3}} %smaller than real, also for effect - note that the resulting sizes are larger than provided here
\begin{document}
\subsection{problem}
\blindtext
\begin{quote}
\blindtext
\end{quote}
\noindent\blindtext
\begin{quote}
\blindtext
\end{quote}
\noindent\blindtext
\end{document}
如果您确实想这样做,您应该阅读 KOMA 手册的相关部分并setspace
按照其建议使用。此外,您请求的字体大小不可用。查看控制台或日志了解详细信息并考虑使用可缩放字体。以下任何一种都可以为您提供此类字体
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{cfr-lm}
\usepackage{<other type1 font package>}