lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 小林 コウキ の投稿
返信数: 9
いつもお世話になっております。

lstlisting環境の間に脚注が入ると,余計な行が頁下部に残ってしまいます。
TeXファイルとPDFも一緒にあげておきます。
脚注上部に残っている行を出さない方法を教えてください。
lstlisting環境内でコマンドを使えるように設定していますが(pagebreakを使用),コマンドの効果は出ています。

いつも質問ばかりで恐れ入りますが,教えてください。

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

小林 コウキ への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 和田 勇 の投稿
添付された.tex はそのままではコンパイルできませんでした。
ですので、以下の処置を行い、コンパイルを試みました。

    1) \usepackage{listings} を挿入
    2) -kanji=sjis の処置をするも NG
    3) しょうがないので UTF-8 化して処理
が、参考として添付された pdf のような結果を得られませんでした。

お手数ですが、添付された pdf の下原稿とされた .tex をもう一度アップロードしてください。
和田 勇 への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 小林 コウキ の投稿
和田 勇様
ご返信ありがとうございます。
結果を報告させていただきます。

コンパイルのかからないファイルをあげてしまい,申し訳ありませんでした。


いろいろ調べてみて,原因がわかりました。
\footnoteruleの再定義内での\noindentの使用がいけなかったようです。

以下がおかしくなる時の定義内容です
\renewcommand{\footnoterule}{%
\noindent\hrule height 0.25pt depth 0pt width 45mm%%

脚注で罫線の長さを変更したくて,\footnoteruleを再定義し\huleの前に\noindentを入れていました。
\noindentを外すとPDFのような余計な1行がでなくなりました。
また,\hspace{0pt}でもおかしくなりました。

\noindentや\hspace{0pt}が使えない理由をご存じですか。

調べていただき,ありがとうございました。
また,お手数をおかけし,申し訳ありませんでした。


今後とも,よろしくお願いいたします。
小林 コウキ への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 和田 勇 の投稿
> \renewcommand{\footnoterule}{%
>\noindent\hrule height 0.25pt depth 0pt width 45mm%%
> }

これをそのまま組み込んでも最初は特に問題はなかったのですが、
別便でアップロードするソースでテスト中に小林さんのケースより
さらに悪い症状が発生してしまいました。添付画像を参考にしてください。

悪くなってしまった点
 1)空行が挿入されてしまった
 2)19行しかないものが 20行になってしまった
 3)行番号が「14」空行「16」改ページ「15] 「17」と変

現状は footnoterule の再定義を行わないようにする方向で記述されていると
理解していますので、これ以上の追求は行わない予定です。
添付 スクリーンショット 2023-06-01 16.15.17.png
和田 勇 への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 和田 勇 の投稿
テスト中におかしくなったソースです。
和田 勇 への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- はやて (h20y6m) の投稿

lstlisting は段落開始時(\everypar)で左側の行番号や枠線を出力する処理をしているみたいです。

\noindent\hspace は段落を開始するので、lstlisting 中に改ページが発生し、そのページで実行される \footnoterule にこれらが含まれていると脚注の罫線のところで行番号や枠線を出力する処理が実行されてしまう。ということではないかと思います。

和田さんのコードで行番号が 14, 16, 15, 17 となっているのは、15 行目が出力された時点で本文の高さが \textheight を超え改ページ処理が行われ、14 行目と 15 行目の間で改ページされ、1 ページ目の脚注の罫線出力時に \noindent で余分な行番号 16 が出力され、2ページ目の処理が始まり 16 行目の行番号が 17 で出力される。といったことが起きているのではないかと思います。

はやて (h20y6m) への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 和田 勇 の投稿
追跡調査感謝です。

小林さんがどうしても foootnoterule の再定義が必要であれば、
不得手だけど調査は継続しようと思います。

ですので、どうしてもというのであれば、
当初問題定義された PDF を作成した時のソースを
お手数ですがアップしてください。
知りたいのは、
  ページデザインをどのようにしているか
   lstlisting のセットアップなど
   footnote 周りのカスタマイズ情報など
  などなど
です。
和田 勇 への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 小林 コウキ の投稿
はやて (h20y6m)様
和田 勇様

ご返信ありがとうございます。

調査ありがとうございます。


はやて (h20y6m)様
>\noindent や \hspace は段落を開始する
これで,余計な行が出てしまうということなのですね。
いろいろ勉強になりました。


和田様
6/1の返信でおかしな箇所は「7行目」です。

現時点で解決はしましたが,何かの折に見ていただけると幸いです。
lstlistingなどを入れたzipをアップします。



よろしくお願いいたします。
小林 コウキ への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 和田 勇 の投稿
調査してゆくと、2004 年ごろの platex を利用されていることがわかり、
その環境を用意するのが困難なので作業を中止することにします。
(最近の TeXLive でも件の問題は発生することは承知していますが。)

*経緯*

提供していただいた情報だと最初の投稿の pdf を作成した時の
.tex ではないようですね。修正を繰り返して元に戻れないのだと
思いますので、これに関しては容認することにします。

なお、いろいろな情報を追加請求した理由は、最初の投稿の .pdf を
見ると jbook でタイプセットするよう ..tex に記述されていますが、
なんらかのカスタマイズの影響も合わせて調べるためでした。

  1 ページ目と2ページ目の左マージンが同じ
  脚注の「1)」の前の空白がカスタマイズしているように見える

沢山のスタイルファイルが同梱されていましたが、jlisting.sty 以外は
通常 texlive に同梱されているのにな .. なんかカスタマイズしてるのかな
と思って .log をみると随分と古い latex 環境を利用されていることが判明。

  --- "小林/sample.log" 2023-06-02 11:13:32.000000000 +0900
  +++ "和田/sample.log" 2023-06-02 23:22:48.213315798 +0900
  @@ -1,251 +1,316 @@
  -This is pTeX, Version 3.141592-p3.1.4 (sjis) (Web2C 7.5.3) (format=platex 2004.9.23)  2 JUN 2023 11:13
  +This is e-pTeX, Version 3.141592653-p4.1.0-230214-2.6 (utf8.euc) (TeX Live 2023) (preloaded format=platex 2023.5.21)  2 JUN 2023 23:22
  +entering extended mode
  + restricted \write18 enabled.
  + %&-line parsing enabled.
   **sample
   (./sample.tex
  -pLaTeX2e <2004/08/10>+0 (based on LaTeX2e <2003/12/01> patch level 0)
  -(d:/ptex314/share/texmf/ptex/platex/base/jbook.cls
  -Document Class: jbook 2002/04/09 v1.4 Standard pLaTeX class
  -\c@@paper
和田 勇 への返信

Re: lstlisting環境の間に脚注が入ると,余計な行が残ってしまう

- 小林 コウキ の投稿
和田 勇様
ご返信ありがとうございます.


>2004 年ごろの platex を利用されていることがわかり、
基本的に古いplatexを利用しています.
先にお伝えすべき事柄でした.大変,申し訳ありません.
また,貴重なお時間を割いていただいたきまして,ありがとうございました.