jlreqでも\narrowbaselinesしたい

jlreqでも\narrowbaselinesしたい

- S. Ichijo の投稿
返信数: 5
題名の通り、(lt)jsarticleなどのドキュメントクラスで用意されている\narrowbaselinesコマンドをjlreqクラスでも利用したいのですが、どう定義するとよいでしょうか。
\newif\ifnarrowbaselines
\if@english
\narrowbaselinestrue
\fi
\def\narrowbaselines{%
\narrowbaselinestrue
\skip0=\abovedisplayskip
\skip2=\abovedisplayshortskip
\skip4=\belowdisplayskip
\skip6=\belowdisplayshortskip
\@currsize\selectfont
\abovedisplayskip=\skip0
\abovedisplayshortskip=\skip2
\belowdisplayskip=\skip4
\belowdisplayshortskip=\skip6\relax}
\def\widebaselines{\narrowbaselinesfalse\@currsize\selectfont}
とすると、
! You can't use `\spacefactor' in math mode.
\@->\spacefactor
\@m {}
というエラーが出てしまいます。

ソースを添付しましたので、ご指摘、ご教示お願いいたします。
S. Ichijo への返信

Re: jlreqでも\narrowbaselinesしたい

- 和田 勇 の投稿

この件に関しては知識がないのですが、 誰も答えていないので、対処療法です。

カスタマイズ内容に「@」を含むものをプリアンブルに 記述する場合は「定石通り」「\makeatletter」「\makeatother」 で括りますが、このままでは「\if@english」に絡むエラーが発生します のでその対処をすると以下のようになると思います。

     \makeatletter%%  追加
     \newif\if@english%%  追加
     \newif\ifnarrowbaselines
     ....
     \makeatlother%%  追加

これでエラーは出なくなりますが、お望みの narrowbaseline の機能が反映しているかどうか判断できません :-( 悪しからず

和田 勇 への返信

Re: jlreqでも\narrowbaselinesしたい

- S. Ichijo の投稿
返信ありがとうございます。
コンパイルは通りましたが、narrowbaselinsの機能は反映されていませんでした...
jlreqで\narrowbaselinesを使うというのは無理があるのかもしれません。大人しくjsarticleのままでいこうと思います。
お手数をおかけして申し訳ありません。
S. Ichijo への返信

Re: jlreqでも\narrowbaselinesしたい

- 北見 けん の投稿
お示しのサンプルソースの \narrowbaselines の定義は、
js****.cls での実装とはかなり異なるようです。
なにを参考にされたのでしょうか?

js****.cls での実装を見ると、
\narrowbaselines によってフラグを立てて、
実際に行間のアキの設定をするのは
\normalsize や \small などのフォントサイズ設定命令の中で行っているようです。

その辺りを参考にすればよいのではないでしょうか?
北見 けん への返信

Re: jlreqでも\narrowbaselinesしたい

- S. Ichijo の投稿
北見様

返信ありがとうございます。返信いただいていたことに気付きませんでした。
返信が遅くなり、たいへん申し訳ありません。

お示しのサンプルソースの \narrowbaselines の定義は、
js****.cls での実装とはかなり異なるようです。
なにを参考にされたのでしょうか?
jsclasses、具体的にはjsarticleのソースからそのまま拝借しましたが、ソースを読んでも\narrowbaselinesが実際に何をしているかよく理解できず、とりあえず実験してみようということで、そのまま貼り付けてみたという次第です。
js****.cls での実装を見ると、
\narrowbaselines によってフラグを立てて、
実際に行間のアキの設定をするのは
\normalsize や \small などのフォントサイズ設定命令の中で行っているようです。
なるほど。まず行間を狭めるフラグを立てたうえで、これを参照して、\normalsize や \small などのフォントサイズ設定命令内で行間の更新をしていたのですね。

高度な処理で、自分の知識では到底実装できなさそうですので、narrowbaselinesを使いたい文書ではjlreqの使用は諦め、ltjsarticleを使う方針に固まりました。
ありがとうございます。
S. Ichijo への返信

Re: jlreqでも\narrowbaselinesしたい

- 北見 けん の投稿
まずこちらについて。

>    お示しのサンプルソースの \narrowbaselines の定義は、
>    js****.cls での実装とはかなり異なるようです。
>    なにを参考にされたのでしょうか?
>
> jsclasses、具体的にはjsarticleのソースからそのまま拝借しましたが、

私の認識が違っていました。手元の古い jsarticle などを見ていたために、
実装が異なると誤認していました。申し訳ありません。
最近の jsarticle での定義だと、S. Ichijo さんが書いた通りになっていました。

ただ、古いものと最近のものとの相違点は数式周りの寸法を維持するかどうかというところで、

> \narrowbaselines によってフラグを立てて、
> 実際に行間のアキの設定をするのは
> \normalsize や \small などのフォントサイズ設定命令の中で行っているようです。

と書いた点は変わっていないようです。
なので、もしも他の文書クラスファイルを使っているときにもこの機能を盛り込むのであれば、
やはり、jsarticle を参考に \normalsize なども書き換えることで実現できるでしょう。
しかし、js系の文書クラスを使うことで解決しているのであれば、
あえてどうこうすることも無さそうですね。