documentclass{jlreq}をlualatexでコンパイルできない。

documentclass{jlreq}をlualatexでコンパイルできない。

- アラカザム の投稿
返信数: 8

皆様、いつも大変勉強させていただいております。
現在私が質問させていただいた他のトピックスがあるのですが、少し緊急性が高かったので再度トピックを立てさせていただきました。

表題の件ですが、今後のことを考えドキュメントクラスをjreqにしようとしたのですが、以下のエラーメッセージが出て、lualatexでのコンパイルがうまくいきません(問題点)。

c:/Users/saisa/OneDrive/sandbox/sample/sample/sampletex/01-sample.tex:31: TeX capacity exceeded, sorry [input stack size=10000].
\makeatletter  ->\catcode `\@ 1
                               1\relax
l.31 \section
           {い}󿿿

Here is how much of LuaTeX's memory you used:
 28343 strings out of 475554
 125244,1977958 words of node,token memory allocated
 6461 words of node memory still in use:
   35 hlist, 2 vlist, 20 rule, 1 ins, 4 local_par, 1 dir, 6 math, 60 glue, 4 kern, 12 penalty, 27 glyph, 1 page_insert, 2148 attribute, 65 glue_spec, 184 attribute_list, 2 write, 35 user_defined nodes
   avail lists: 1:12,2:85,3:1,4:6,5:30,7:1,8:5,9:9,10:5,11:3,12:4
 50543 multiletter control sequences out of 65536+600000
 125 fonts using 109672391 bytes
 10000i,12n,128p,8965b,26663s stack positions out of 10000i,1000n,20000p,200000b,200000s
c:/Users/saisa/OneDrive/sandbox/sample/sample/sampletex/01-sample.tex:31:  ==> Fatal error occurred, no output PDF file produced!

logを確認したところ、こちらのページを参考に001-testpreamble.texの下方に記述した、

\makeatletter
\def\mojiparline#1{
  \newcounter{mpl}
  \setcounter{mpl}{#1}
  \@tempdima=\linewidth
  \advance\@tempdima by-\value{mpl}truept(←この部分はluatexでの使用を考え、zw→trueptに変更)
  \addtocounter{mpl}{-1}
  \divide\@tempdima by \value{mpl}
  \advance\kanjiskip by\@tempdima
  \advance\parindent by\@tempdima
}
\makeatother
\def\linesparpage#1{
  \baselineskip=\textheight
  \divide\baselineskip by #1
}

が原因なのかなとは思っているのですが、問題の解決方法がわかりません。

年末年始でお忙しい中恐縮ですが、ぜひご教授いただければと思います。

必要かと思われるファイルにつきましてはzipにて添付させていただきます。

どうぞよろしくお願いいたします。

---------------------------
以下環境

OS: Windous 11 Home, ver. 23H2
エディタ: VS Code
texコンパイラー: texlive2024 (tlmgr update --self --all 実行済み)

アラカザム への返信

Re: documentclass{jlreq}をlualatexでコンパイルできない。

- 和田 勇 の投稿

当方では、01-sample.tex と同じディレクトリに、sample/texmysty 以下の各種ファイルなどを配置してテストしています。

テストは地道に、宣言ごとに関係する定義のコメントアウト名どの試行錯誤の上確認しました。

詳しくは調べていませんが、\usepackage{endnotes} に関する一部記述をコメントアウトすると通るようです。

(正前回の質問の改善は実現していません)

テストした際の差分を参考にしてください。

和田 勇 への返信

Re: documentclass{jlreq}をlualatexでコンパイルできない。

- 和田 勇 の投稿

csquotes.sty の動きを調べてみた

言語による引用符の制御を行なっている \usepackage{csquotes} の宣言を コメントアウトすると @article タイプのタイトルがアメリカ式に表示されるようになった。

しかし、ログには Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing. と記録されてしまう。

インターネット検索すると、どうも babel polyglossia パッケージと csquotes の組み合わせがよくないようなことが多々記録されていた。

そこで texdoc csquotes を調べると style というオプションがデフォルトで american に なっているが、ダメもとで \usepackage[style=american] としたところ、 Stephen W Hawking. “Black hole explosions?” In: ... となった。

なお、提示されたソースでは、american でも english でも結果は同じでした。

        diff --git a/001-testpreamble.tex b/001-testpreamble.tex
        index e6e5767..0ff5a01 100644
        --- a/001-testpreamble.tex
        +++ b/001-testpreamble.tex
        @@ -272,7 +272,7 @@

           %------行番号表示-------------------------------------------------------------------
           \usepackage{lineno}
        -  \usepackage{csquotes}
        +  \usepackage[style=english]{csquotes}% american でも同じ結果でした
           %\linenumbers
           %~~~~~~
           %\nolinenumbers

別解

どうして日本語ベースになってしまうのか気になったので以下の実験をしました。

次のように babel のオプションの最後に english をつけても良いようです。

        diff --git a/001-testpreamble.tex b/001-testpreamble.tex
        index d708b3b..79fd6e0 100644
        --- a/001-testpreamble.tex
        +++ b/001-testpreamble.tex
        @@ -13,7 +13,7 @@
           \usepackage[LGR,T1]{fontenc}
           %\usepackage[utf8]{inputenc}
           \usepackage{lmodern}
        -  \usepackage[greek,english,ngerman,german,latin,japanese]{babel}
        +  \usepackage[greek,ngerman,german,latin,japanese,english]{babel}
           \languageattribute{greek}{polutoniko}
           %\usepackage{csquotes} →linenoパッケージへ
           \newcommand{\en}{\leavevmode\selectlanguage{english}}
和田 勇 への返信

Re: documentclass{jlreq}をlualatexでコンパイルできない。

- 和田 勇 の投稿

訂正

別解 として紹介した \usepackage[greek,ngerman,german,latin,japanese,english]{babel} の変更を加えると 日本語の@article 文献情報が、英語用の表示になってしまいますので、別解は取り下げします。

誤→ 真貝 寿明. “タイムトラベルの数理: 未来へのトラベル, 過去へのトラベル, ブラックホール, ワームホール”. In: 数理 科学 62.6 (June 2024), pp. 22–29. ISSN: 03862240, pp. 25.

和田 勇 への返信

Re: documentclass{jlreq}をlualatexでコンパイルできない。

- アラカザム の投稿
和田様
いつも丁寧に教えていただき、ありがとうございます。

\usepackage{endnotes}に関する記述をコメントアウトしたら、無事処理が通りました。
ありがとうございました。
 
ですが、\renewcommand{\theendnote}{(\arabic{endnote})}を削除したことで、脚注のラベルの変更が反映されなくなってしまったのですが、こちらを解決する方法はあるのでしょうか。
 
もしくはjlreqクラス文章では脚注のラベルの変更ができないのでしょうか。
再度ご教授いただければ幸いです。
アラカザム への返信

Re: documentclass{jlreq}をlualatexでコンパイルできない。

- m c の投稿
脚注のラベルであれば,普通に
\renewcommand{\thefootnote}{(\arabic{footnote})}
とすれば変更できます.

もともとendnotesパッケージを想定されていたのでしたら脚注ではなくて後注がご希望だと思うのですが,jlreqの後注でラベル書式が変更できるかどうかはjlreq.clsをよく読んでみないと(私には)わかりません.
m c への返信

Re: documentclass{jlreq}をlualatexでコンパイルできない。

- m c の投稿
自己レスです.
> jlreqの後注でラベル書式が変更できるかどうか
実際にやってみたところ,後注の場合も上記(\renewcommand{\thefootnote}{(\arabic{footnote})})でラベル書式が変更できました.
アラカザム への返信

Re: documentclass{jlreq}をlualatexでコンパイルできない。

- 鈴木 靖 の投稿

既に解決済みかも知れませんが・・・

上手く説明は出来ないのですが,以下の修正で通りました(pdf添付)。

目的が達成しているでしょうか。

該当部分のみ ↓

%\usepackage{endnotes} %% 章節ごとに脚注を出力
\let\footnote=\endnote %% 文書中の\footnoteコマンドを\endnoteに再定義
\renewcommand{\thefootnote}{(\arabic{footnote})}
%\renewcommand{\theendnote}{(\arabic{endnote})}
%\renewcommand{\notesname}{} %% 「Note」を消す

以上

鈴木 靖 への返信

Re: documentclass{jlreq}をlualatexでコンパイルできない。

- アラカザム の投稿

mc様、鈴木様
ご回答ありがとうございました。

脚注・後注ともにラベルの変更ができました。

今後とも勉強させていただきます。