abenori / jlreq

Other
127 stars 18 forks source link

itemization_beforeafter_spaceは入れ子内の子には無効にしたほうがよい? #22

Closed kmuto closed 6 years ago

kmuto commented 6 years ago

以下のような入れ子のitemizeを持つドキュメントにおいて、前後段落とのアキを入れるためにitemization_beforeafter_spaceを使ったところ、子のitemizeリストにも前後アキが入ります。 一般的な組版や、jsbookでは子のitemizeのほうの前後にはアキは入れないと思うので、最上位のみに限定するか、何か制約用のオプションが必要になるのではと思います。

%\documentclass[uplatex]{jsbook}
\documentclass[book,twoside]{jlreq}
\jlreqsetup{itemization_beforeafter_space=\baselineskip}

\begin{document}
para1

\begin{itemize}
\item 1
  \begin{itemize}
    \item 1-1
    \item 1-2
  \end{itemize}
\item 2
\end{itemize}

para2
\end{document}
abenori commented 6 years ago

最上位のみに限定するか、何か制約用のオプションが必要になるのではと思います。

また実用上ですが,子itemizeの前後も空けたいということはありますか?あるならば各レベルで個別に指定できるようにしようかと.

kmuto commented 6 years ago

自分の知る限りでそういうデザインは見ないのですが、「最上位だけ特別に効く」をやるよりも「2レベル以下も変えられるけどデフォルトの上下アキは0」というほうが、(レアケース・あるいはちょっとトリッキーな利用にせよ)変えたいときに簡単に変えられてよさそうですね。

abenori commented 6 years ago
\jlreqsetup{itemization_beforeafter_space={ii=10pt}}

みたいにしてレベル2の前後空きを10ptにできるようにしようかと考えています.今のところは

\jlreqsetup{
   itemization_beforeafter_space={
    5pt, % ここをどこ相手の指定にするか悩む
    i=10pt, % トップレベルは10pt
    ii=20pt % レベル2は10pt
   }
}

という風なものを考えています.上の5ptは

  1. 全てのレベルへの適用
  2. トップレベルのみへの適用

のどっちがよいのか悩んでいます.1の方が方が(トップレベルを特別扱いしないという点で)論理的にはすっきりします.ただし,「トップレベルのみに空きを適用して他は0ptにする」ためには

となり,2の方がちょっと短いです.

kmuto commented 6 years ago

はい、1のほうが感覚的かなと思います。

abenori commented 6 years ago

eca9ed7 で上のように指定できるようにしました.

kmuto commented 6 years ago

うまく動きましたー