Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

review-jlreqでコードハイライトのlistingが使えない #1893

Open
uyumyuuy opened this issue May 4, 2023 · 4 comments
Open

review-jlreqでコードハイライトのlistingが使えない #1893

uyumyuuy opened this issue May 4, 2023 · 4 comments

Comments

@uyumyuuy
Copy link

uyumyuuy commented May 4, 2023

review-jlreqでコードハイライトにlistingマクロを使うとemlistでエラーが出ます。

再現手順

reviewのバージョンは5.6.0

  1. review-init --latex-template review-jlreq reviewtestでjlreq環境をつくる
  2. config.ymlを編集
highlight:
  #   html: "rouge"
  latex: "listings"
  1. reviewtest.reを編集
= 

//emlist[][]{
test
//}
  1. rake pdfを実行
./reviewtest.tex:4: LaTeX Error: Environment reviewemlistlst undefined.

対策

jsbookでインストールした環境からplistings.styを持ってきて、review-base.styから \ifdefined\review@highlightlatex以下をコピーしてreview-custom.styに移植すると、コンパイルできます。

さらに

対策後にTeX環境をuplatexからlualatexに切り替えると、

//emlist[][]{
’
//}

こちらをコンパイルしたときに

[3] [4] (./reviewtest.tex
./reviewtest.tex:6: Undefined control sequence.
\ltj@lst@ProcessJALetter ...num \postbreakpenalty 
                                                  `#1>0 \ltj@lst@setopenflag...

l.6 \end{reviewemlistlst}

というエラーが出ます。の文字がだめみたいです。uplatexのときや、lualatexでもlistingを使わなければ大丈夫です。

@kmuto
Copy link
Owner

kmuto commented May 4, 2023

そういえばlistingsだとtcolorboxと食い合わせが悪く、mintedにする必要があるが-shell-escape問題が…というところでreview-jlreqのハイライトリストについては放置していました…。

upLaTeXでのワークアラウンド的には対策でひとまず問題ないかと思います。
LuaLaTeXのほうはplistingsが合わないことが原因なので、review-custom.styにコピーしたRequirePackage行で,plistingsを削除すればおそらく通るのではないでしょうか。

@uyumyuuy
Copy link
Author

uyumyuuy commented May 5, 2023

ありがとうございます。,plistingsの削除で通るようになりました。

もうひとつ、review-jlreqとlistingsの組み合わせだとコード中の自動改行が効かないというのもあるのですが、これもtcolorboxとの相性なのでしょうか。(uplatex, lualatexとも)

手元ではmintedに移行してうまくいっています。

@kmuto
Copy link
Owner

kmuto commented May 6, 2023

jlreqでlistingsのbreaklines=trueが無視されるのはlistings側の問題っぽい感じがしますね…。
いずれにせよlistingsだといろいろ厳しいので、mintedのほうが安定しそうです。

@munepi
Copy link
Contributor

munepi commented May 6, 2023

まず、review-jlreqがLuaLaTeX対応していません。

  • (u)pLaTeX: listingsパッケージの日本語対応はplistingsパッケージ
  • LuaLaTeX: luatexjaパッケージの下で、listingsパッケージが読み込まれると、lltjp-listingsパッチが当たります。

もうひとつ、review-jlreqとlistingsの組み合わせだとコード中の自動改行が効かないというのもあるのですが、
これもtcolorboxとの相性なのでしょうか。(uplatex, lualatexとも)

これは、

% ハイフネーション禁止。@M=10000。@m=1000
% latexdef 〜 で確認
\hyphenpenalty\@M\relax
\exhyphenpenalty\@M\relax

が影響しています。そこで、LaTeX標準の値を

\newcommand{\loosehyphen}{%
  \hyphenpenalty=50\relax\exhyphenpenalty=50\relax}

と与えておいて、listingsのフォント指定で\loosephypenも添えてあげると、「コード中の自動改行」も通るはずです。


あまりLaTeX事にとらわれずに、syntax highlightingをPygmentsと合わせるなら、mintedパッケージを利用するほうがお手軽だと思います。
(listingsパッケージも、自身のオプションたちの挙動とtcolorboxパッケージとの挙動に付き合えるなら、悪い選択肢でないです)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants