85473


platexでドキュメントクラスはjlreqです。  
デフォルトの\sectionや\subsectionなどの見出しは上下の余白が広いので狭くしたいです。  
そこでネットを頼りに以下のように書いたのですがエラーがでてしまいました。

・書いたコード

[code]

    \makeatletter
      \def\section{\@startsection {section}{1}{\z@}{-1.5ex plus -1ex minus -.2ex}{1.5 ex plus .2ex}{\large\bf}}
      \def\subsection{\@startsection {subsection}{1}{\z@}{-1.5ex plus -1ex minus -.2ex}{1.3 ex plus .2ex}{\normalsize\bf}}
      \def\subsubsection{\@startsection {subsubsection}{1}{\z@}{-1.5ex plus -1ex minus -.2ex}{.3 ex plus .2ex}{\large \bf $\spadesuit$ }}
    \makeatother
    
[/code]

・エラー内容

[code]

    ! Undefined control sequence.
    <argument> \large \bf 
                          
    l.84 \section{hoge}
    
[/code]

お聞きしたいことは２つです。

  1. 何が問題でどう修正したらいいのでしょうか？
  2. {--ex plus --ex minus --ex}{--ex plus --ex minus --ex}を上下1行の余白に調整したい場合{1.0em}{1.0em}とすればよろしいのでしょうか？

よろしくお願いいたします。


CC BY-SA 4.0
2022-01-04T00:53:56.507
85472
2022-01-05T04:47:43.503
2022-01-05T04:47:43.503
3060
48769
question
latex
\section など見出し上下の余白を調整したい


これは jlreq に固有の話ですが，jlreq
の見出し命令はそもそも「上にいくら，下にいくらの余白を与える」というしくみになっていません．代わりに「行取り」と呼ばれる方式が採られています．これは「見出しのために
n 行分のスペースを確保して，その中央位置に見出し文字列を配置する」という戦略です． ~~そのため「上下のスペースの長さを寸法で指定しよう」という方針は
jlreq とは相性がよくありません．~~

（2022-01-05 追記：jlreq でも上下の長さ指定で別行立て見出しを作ることができるようです．詳細をこの回答の末尾に追記します）

jlreq で上下の余白を小さくしたい場合は，当然「行取り」する行数を少なくすればよいです．jlreq
にはこの設定を変更するための機能を備えています（詳細は `texdoc jlreq` するかインターネット上で [jlreq
のマニュアル](https://github.com/abenori/jlreq/blob/master/README-
ja.md)を確認してください）．例えば jlreq の `\section`
はデフォルトで3行取りですが，これを2行に変更するためには以下のようにします：

[code]

    \ModifyHeading{section}{lines=2}
    
[/code]

TeX の文法と LaTeX
の内部実装について，十分に詳しく勉強する覚悟がある場合は内部実装をいじっても構わないのですが，そうでない場合にネットの断片情報を参考に（`@`
を含む命令が出てくるような）TeX
言語のコードをコピペ利用すると苦労することが多いです．内部実装をいじろうとする前に，使用している文書クラスやパッケージのドキュメントをよく読み，それらの提供する公式の機能を用いて自分がやりたいことを実現する手段がないか確認する習慣を付けるとよいでしょう．

その点 jlreq は優秀な文書クラスで，TeX 言語を書かなくても設定により様々なカスタマイズができるようになっています．

* * *

jlreq の見出しは（[日本語組版処理の要件 (JLREQ)](https://www.w3.org/TR/jlreq/)
の記述に基づき）基本的に「行取り」方式で作られることが想定されていますが，機能としては「前後の余白を寸法値で指定する」方法も備えているようです．どうしてもこの方法を採用したい場合は同じく見出しを設定する命令の引数において
`before_space` と `after_space` を同時に指定します．例えば前後に 5pt ずつスペースを入れたい場合は次のようにします：

[code]

    \ModifyHeading{section}{before_space=5pt, after_space=5pt}
    
[/code]


CC BY-SA 4.0
2022-01-04T01:34:02.443
85473
2022-01-05T04:45:16.360
2022-01-05T04:45:16.360
27047
27047
85472
answer