
メイン文書の行間を 1.5 に設定し、インデントされた引用文の行間を 1 に設定しようとしています。
私は、それを実行する良い方法が提案されていることに気づきましたblockquote のスタイルを設定するには?ただし、段落内のインデントされた引用にこれを適用しようとすると、前のテキストに単一のスペースが適用されます。
前に不必要な単一スペースを適用するメカニズムと、それを修正する方法は何ですか?
\lipsum[66]
回避策としては、最初のとの間に改行を入れることです\begin{quote}
が、これらは同じ段落に属しているはずなので、意味的には「正しくありません」。
MWE:
\documentclass[UKenglish]{article}
\usepackage{babel}
\usepackage[autostyle]{csquotes}
\usepackage{lipsum}
\usepackage{setspace}
\usepackage{etoolbox}
\onehalfspacing
\AtBeginEnvironment{quote}{\singlespacing}
\begin{document}
\lipsum[66]
\begin{quote}
\lipsum[75]
\end{quote}
\lipsum[66]
\end{document}
答え1
TeX と LaTeX の一部の設定は段落全体に適用されます。 と で設定される行間隔は\onehalfspacing
その\singlespacing
ような設定の 1 つです。通常、段落は段落の最後にアクティブになっている設定でタイプセットされます。
内部的にはquote
として実装されており\list
、ある時点で を呼び出して\par
リストの新しい段落を開始します。
パッチを適用すると、質問のコードは基本的に実行されることになります。
\lipsum[66]
{\singlespace\list...\endlist}
\list
呼び出しが含まれている場合\par
、LaTeXは次の状況に似たものを認識することになります。
\lipsum[66]{\singlespace\par}
ここで段落は終了し、段落全体が行間設定を有効にしてタイプセットされます。その時点でしたがって、段落全体が 1 行間隔でタイプセットされます。
明らかにこれは私たちが望んでいることではありません。1つの解決策は、(これはすでに質問で見つけたものです)に入る前に手動で段落を終了することですquote
。これが意味的に間違っていると思われる場合は、パッチに含めることで、 \par
(quote
とにかく実行される)を少し早く強制することができます。
\documentclass[UKenglish]{article}
\usepackage{babel}
\usepackage[autostyle]{csquotes}
\usepackage{lipsum}
\usepackage{setspace}
\onehalfspacing
\AtBeginEnvironment{quote}{\par\singlespacing}
\begin{document}
\lipsum[66]
\begin{quote}
\lipsum[75]
\end{quote}
\lipsum[66]
\lipsum[66]
\end{document}
ロード中なので、csquotes
標準の ではなく、実際にその環境の 1 つを使用することをお勧めします。その後、 で提案されているように、また で示されているようquote
に、その動作を変更できます。csquotes.cfg
私の答えにcsquotes の引用のフォント サイズを変更するにはどうすればよいでしょうか?
意味的に優れたソリューションとしては、によって導入されるスペース補正を回避するために、の内部実装を\singlespacing
as 設定として使用する必要があります。\setstretch {\setspace@singlespace}
\singlespacing
\documentclass[UKenglish]{article}
\usepackage{babel}
\usepackage[autostyle]{csquotes}
\usepackage{setspace}
\onehalfspacing
\makeatletter
\newenvironment{singlequote}
{\quote\setstretch{\setspace@singlespace}}
{\endquote}
\makeatother
\SetBlockEnvironment{singlequote}
\usepackage{lipsum}
\begin{document}
\lipsum[66]
\begin{displayquote}
\lipsum[75]
\end{displayquote}
\lipsum[66]
\end{document}
答え2
スペースを変更せずにコードを実行すると、出力内の引用符の前後に空白行が入ります。したがって、2 つの中間のように見えます\lipsum[66]
。
出力で引用符の前に余分なスペースを表示したくない場合は、引用符の前に負のスペースを入れます。例:
% spacingpob.tex SE 569716
\documentclass[UKenglish]{article}
\usepackage{babel}
\usepackage[autostyle]{csquotes}
\usepackage{lipsum}
\usepackage{setspace}
\usepackage{etoolbox}
%\onehalfspacing
%\AtBeginEnvironment{quote}{\singlespacing}
%\AtBeginEnvironment{quote}{\onehalfspacing\singlespacing}
\begin{document}
\lipsum[66]
\vspace{-0.6\baselineskip}
\begin{quote}
\lipsum[75]
\end{quote}
\lipsum[66]
\end{document}
おそらく、セマンティクスLaTeX 内のものと出力内のものの違い。