
問題
TeX/LaTeX で、ページのターゲットの高さからの行の距離から生じる不具合を何らかの方法で軽減する方法はありますか?
コンテクスト
私は、学生が MS Word ではなく LaTeX を使用してポータブル ドキュメントの作成を自動化するためのドキュメント クラスを作成しています。学生は LaTeX にまったく精通していないことが予想されるため、LaTeX クラスで可能な限り多くのコーナー ケースを自動的に処理したいと考えています。
同時に、私の機関には、フォント、スペース、配置などに関して、私がカバーしようとしている文書の種類に対する要件があります。ただし、文書全体でページの下部の余白が多少不一致であっても許容されます。
特に、論文では 14pt のフォントを使用し、行間を 1.5 にすることが求められています。そのため、xelatex
コンパイルには が使用され、さらに重要なことに、ページの下端からの行の垂直距離によって条件付けられる悪さが、通常の TeX/LaTeX 文書よりもはるかに速く増加します。
次の MWE は問題を再現します ( pdflatex
too 付き)。
\documentclass{book}
\renewcommand{\section}[1]{\ifhmode\par\fi\addvspace{0.5em}\textbf{#1}\par
\penalty201\addvspace{0.5em}}
\renewcommand{\subsection}[1]{\ifhmode\par\fi\addvspace{0.5em}\textbf{\textit{#1}}\par\penalty301}
\begin{document}
\parskip=1em\raggedbottom
\tracingonline=1\tracingpages=1
1\par2\par3\par4\par5\par6\par7\par8\par9\par10\par11\par12\par13\par14\par
15\par16\par17\par18\par19\par20\par21\par22
\section{Section 1}\section{Section 2}\subsection{Subsection}
\par23
\end{document}
結果は次のようになります (ここでは読みやすくするために画像を人為的にトリミングし、ページの余白を減らしています)。
ページトレースにより次の情報が得られます (ページ間の部分)。
% t=472.0 g=550.0 b=10000 p=0 c=100000#
% t=499.0 g=550.0 b=10000 p=201 c=100000#
% t=526.0 g=550.0 b=10000 p=201 c=100000#
% t=553.0 g=550.0 b=* p=301 c=*
[1]
%% goal height=550.0, max depth=5.0
% t=10.0 g=550.0 b=10000 p=301 c=100000#
% t=32.0 g=550.0 b=10000 p=0 c=100000#
この例では、セクション 2 をサブセクションと同じページに配置します。また、サブセクションを、周囲の罰則に関する段落「23」と同じページに配置します。
セクション タイトルの後にinfinitely bad を割り当てるだけでよいことはわかっています\penalty 10000
が、そうすると別の問題が発生します。最初に空の章/セクション/サブセクションなどを配置してコンテンツの構造を定義し、次にコンテンツを適切に入力するのが一般的であるように思われます。infinite ペナルティを使用すると、そのようなセクションはすべて同じページに配置され、ページ境界を超えて配置されます。これが実際に\@startsection
行われていることです。
つまり、ペナルティはあるものの、MWE のセクション 1 とセクション 2 の間にページ区切りを入れられるようにしたいのです。
私が見つけたこれらの目標を達成する唯一の方法は、\parskip
伸縮 (実際の例では 5em) と収縮を試してみることですが、信頼できる解決策ではないようです。機関の要件に違反する可能性があり、タイポグラフィでは一般的に望ましくないと聞いています。したがって、ペナルティを尊重するために、下マージンを伸縮可能にしながらも悪さを無限にしないようにしたいのですが、私の質問は LaTeX クラスでそれを行う可能性についてです。
\raggedbottom
とも使用してみました\def\@textbottom{...}
が、ページ区切りの悪さやコストにはまったく影響しませんでした。ツールを使用して結果の PDF を比較しましたがdiff-pdf
、これらのマクロを配置してもまったく違いはありませんでした。