showexplがうまく表示されない

showexplがうまく表示されない

- 浮亭 夢介 の投稿
返信数: 9
ソースコードと結果をタイプセットする以下のLaTeXコード
ですが白紙のPDFが出力されます.以前は正しく出力されて
いました.どこがおかしいのでようか.因みにw32TeX最新版です.
------------------
\documentclass{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{showexpl}
\usepackage{listings,jlisting}
\usepackage{amsmath}
\begin{document}
\begin{LTXexample}[pos=b,width=\textwidth]
\begin{document}
二次式です
\begin{equation}
y=ax^2+bx+c
\end{equation}
\end{document}
\end{LTXexample}
\end{document}
------------------

つぎのクラスファイルも試してみました.

\documentclass{ltjsarticle}→ 日本語があるとダメ
\documentclass[lualatex,ja=standard]{bxjsarticle}→ ダメ
\documentclass[uplatex,dvipdfmx,ja=standard]{bxjsarticle}→ OK
\documentclass[platex,dvipdfmx,ja=standard]{bxjsarticle}→ OK
\documentclass{ujarticle}→ OK
浮亭 夢介 への返信

Re: showexplがうまく表示されない

- aminophen の投稿
ソースを少し書き換えて試してみて、TeX Live 2016 最新環境で再現しました。

%\RequirePackage[2016/03/31]{platexrelease}
\documentclass[dvipdfmx]{jsarticle}
\usepackage{listings,jlisting}
\usepackage{showexpl}
\begin{document}

\begin{LTXexample}[pos=b,width=\textwidth]
\begin{document}
二次式です
\begin{equation}
y=ax^2+bx+c
\end{equation}
\end{document}
\end{LTXexample}

\end{document}

・TeX Live 2016 のもとで、platexrelease パッケージで 2016/03/31 に巻き戻しても元に戻ら
ないので、pLaTeX カーネルが原因ではないようです。
・TeX Live 2016 のもとで、jsarticle.cls を TeX Live 2015 の最後のものに置き変えるとちゃんと表示される
ようになりました。最近の jsarticle の変更に一つの原因がある可能性があります。
・一方、上の対処を施しても「あ」の下に余分な空行が一つ増えていました。ということは、他の場所にも
なにか挙動の変化が起きている可能性が高いです。ちなみに、TEXMFDIST/tex/platex 以下のファイル
を全て巻き戻しても元通りになりませんでした。pLaTeX 系とは無関係に、一般 LaTeX パッケージのうちの
いずれかの仕様が変わった可能性もあります。

(jlisting はかなり古く、TeX Live にも入っていないのでいろいろ不都合が起きてもしょうがないのかな…)
aminophen への返信

Re: showexplがうまく表示されない

- aminophen の投稿
> 最近の jsarticle の変更に一つの原因がある可能性があります。

消えてしまう原因は \everyparhook での \inhibitglue 発行方法を変えたことでした。

https://github.com/texjporg/jsclasses/issues/12
https://github.com/texjporg/jsclasses/pull/22

このパッチを元に戻してみると、白紙になる現象は回避できます。
2016/10/08 付けの jsarticle.cls に以下のパッチをあててみてください。

--- jsarticle.cls.orig 2016-10-09 08:36:15.000000000 +0900
+++ jsarticle.cls 2016-12-01 13:07:42.000000000 +0900
@@ -1680,29 +1680,20 @@
  \llap{\@makefnmark\hskip0.3zw}#1}
\def\@inhibitglue{%
  \futurelet\@let@token\@@inhibitglue}
-\begingroup
-\let\GDEF=\gdef
-\let\CATCODE=\catcode
-\let\ENDGROUP=\endgroup
-\CATCODE`k=12
-\CATCODE`a=12
-\CATCODE`n=12
-\CATCODE`j=12
-\CATCODE`i=12
-\CATCODE`c=12
-\CATCODE`h=12
-\CATCODE`r=12
-\CATCODE`t=12
-\CATCODE`e=12
-\GDEF\KANJI@CHARACTER{kanji character }
-\ENDGROUP
\def\@@inhibitglue{%
-  \expandafter\expandafter\expandafter\jsc@inhibitglue\expandafter\meaning\expandafter\@let@token\KANJI@CHARACTER\relax\jsc@end}
-\expandafter\def\expandafter\jsc@inhibitglue\expandafter#\expandafter1\KANJI@CHARACTER#2#3\jsc@end{%
-  \def\@tempa{#1}%
-  \ifx\@tempa\@empty
-    \ifnum\the\inhibitxspcode`#2=2\relax
+  \ifx\@let@token「
+    \inhibitglue
+  \else
+    \ifx\@let@token(
      \inhibitglue
+    \else
+      \ifx\@let@token『
+        \inhibitglue
+      \else
+        \ifx\@let@token[
+          \inhibitglue
+        \fi
+      \fi
    \fi
  \fi}
\let\everyparhook=\@inhibitglue

空行が入る問題はまだ調べ切れていませんが、showexpl.sty の v0.3l → v0.3n の変更が原因のようです。

< showexpl.sty    2014/01/19 v0.3l Typesetting example code (RN)
---
> showexpl.sty    2016/11/20 v0.3n Typesetting example code (RN)
aminophen への返信

Re: showexplがうまく表示されない

- aminophen の投稿
> 空行が入る問題

showexpl.sty v0.3n (2016/11/20) に対するパッチを書いてみました。

--- showexpl.sty.orig 2016-11-26 03:33:58.000000000 +0900
+++ showexpl.sty 2016-12-01 13:37:24.000000000 +0900
@@ -182,13 +182,13 @@
  \x
  \xdef\SX@@explpreset{\the\@temptokena,codefile=\SX@codefile,
    graphic={[\SX@graphicparam]{\SX@graphicname}}}%
-  \begingroup
+  \setbox\@tempboxa=\hbox\bgroup% Warum noetig?
  \let\UTFviii@defined=\@gobble
  \let\@inpenc@undefined@=\@gobble
  \lst@BeginWriteFile{\SX@codefile}%
}%
{%
-  \lst@EndWriteFile\endgroup
+  \lst@EndWriteFile\egroup
  \SX@put@code@result
}
\newcommand*\SX@put@code@result{%
@@ -232,7 +232,7 @@
          \let\@addtofilelist\@gobble
          \let\lst@ifdisplaystyle=\iftrue
          \SX@KillAboveCaptionskip\lst@MakeCaption{t}%
-          \let\lst@belowskip=\z@
+          \lst@belowskip=\z@
          \let\SX@MakeCaption\lst@MakeCaption
          \let\lst@MakeCaption\@gobble{}
          \setbox\SX@ResBox\hbox{%

これで元通りになるようです。
aminophen への返信

Re: showexplがうまく表示されない

- 浮亭 夢介 の投稿
お手数かけました.
パッチコードありがとうございます.
取り敢えず,当初の目的は達成できました.
(jsclassesの訂正版発行,よろしくお願いします)
浮亭 夢介 への返信

Re: showexplがうまく表示されない

- aminophen の投稿
Issue を GitHub に立てたので、関係者の方は意思表示をお願いします。
https://github.com/texjporg/jsclasses/issues/45
aminophen への返信

Re: showexplがうまく表示されない

- aminophen の投稿
showexpl の作者の方に報告しておいたところ、先ほど
修正版 v0.3o を作ったと連絡が来ました。
CTAN にも上がっています。
https://www.ctan.org/pkg/showexpl
aminophen への返信

Re: showexplがうまく表示されない

- Z. R. の投稿
消えてしまう原因は \everyparhook での \inhibitglue 発行方法を変えたことでした。

\jsc@inhibitglue の定義の中で \@tempa という非ユニークな制御綴を使っていますが、これは showexpl.sty も使っていて、衝突しているのが原因のようです。

\@tempa\jsc@ig@str 等のユニークな(このマクロでしか使われない)制御綴に変えれば正常になります。

※一般的に、\everypar\aftergroup などを介して“割り込んでくる”コードの中では非ユニークな制御綴の使用は絶対に避けるべきです。

Z. R. への返信

Re: showexplがうまく表示されない

- aminophen の投稿
先ほど、同じことを Dora TeX さんが書いていらっしゃいました。
https://github.com/texjporg/jsclasses/pull/46
マージしたのでリリース作業を行います。
浮亭 夢介 への返信

Re: showexplがうまく表示されない

- 北川 弘典 の投稿
>\documentclass{ltjsarticle}→ 日本語があるとダメ
手元の TeX Live 2016 で試してみました(LuaTeX-ja は
開発版の kitagawa_test ブランチです)が,
jlisting.sty の読み込みを外すと正常に動いているように見えます.