abenori / jlreq

Other
125 stars 18 forks source link

twocolumnにおいて複数行取り見出しが収まらないときに行送りが変化する #58

Closed kmuto closed 4 years ago

kmuto commented 4 years ago

twocolumnで2列化しているときに、列末尾で複数行取り見出しが「ギリギリ入らない」と、 単にアキを入れるわけではなく、本文側の行送りを変えて収めようとするという挙動になります(masterおよびabenori_dev HEADでテスト)。これは1段組のときには発生しません。

JLREQでこのあたりをどうするか、という明確な定義は見つけられなかったのですが、普通の制作だとこのやり方は見かけないように思います。

ひとまず手元では手動で\clearpageなどして強制的に送れば行送りの変化は防げています。

\documentclass[paper=a5,twocolumn]{jlreq}
\usepackage{jlreq-trimmarks}

\newcounter{L}
\newcommand{\mywhile}[1]{
  \setcounter{L}{0}%
  \loop%
  \ifnum\value{L}<#1%
  {\noindent ■■■■■■■■■■■■■■\par}
  \stepcounter{L}%
  \repeat%
}

\begin{document}

\mywhile{50}

\section{HI}

\end{document}

two

abenori commented 4 years ago

なるほど,把握しました.\parskipで伸びているみたいです.jarticleやjsarticleでは起こらないようですね.

何も考えずに\parskipはjarticleからもってきて,jsarticleをまねて\flushbottomを実行したらこうなったようです.

abenori commented 4 years ago

ちなみに組版としては\raggedbottomよりも\flushbottomの方が望ましいのでしょうか?

kmuto commented 4 years ago

ありがとうございます、jlreq.clsの「最終処理」の箇所をraggedbottomにしたら確かに意図どおりにいきました。

ちなみに組版としては\raggedbottomよりも\flushbottomの方が望ましいのでしょうか?

いやー、2段にするからには列左右で行が揃うのを期待するはずで、flushbottomは変だと思います。 1段でも、下埋めのために行間を変える、というのも普通やらないですね。

munepi commented 4 years ago

なるほど,把握しました.\parskipで伸びているみたいです.jarticleやjsarticleでは起こらないようですね.

  • jsarticleでは\parskip=0pt
  • jarticleでは\raggedbottomになっている.

何も考えずに\parskipはjarticleからもってきて,jsarticleをまねて\flushbottomを実行したらこうなったようです.

以下でよいと思います。

\setlength\parskip\z@skip
\if@twocolumn
  \twocolumn
  \sloppy
  \flushbottom
\else
  \onecolumn
  \raggedbottom
\fi

問題を分けて考えると、

もちろん、組版指定と実装次第で \raggedbottom でも、良い場合もあると思います。

abenori commented 4 years ago

ありがとうございます.結局jsclasses通りにすればよかったという……(よくあるはなし)

というわけで: 0cd1bf9 Underfullでちゃうけど仕方ないですかね.

ちなみに一段組は\raggedbottomでいんですか?