ソースコードと結果をタイプセットする以下の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
ソースを少し書き換えて試してみて、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 にも入っていないのでいろいろ不都合が起きてもしょうがないのかな…)
%\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 にも入っていないのでいろいろ不都合が起きてもしょうがないのかな…)
> 最近の 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)
消えてしまう原因は \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)
> 空行が入る問題
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{%
これで元通りになるようです。
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{%
これで元通りになるようです。
消えてしまう原因は \everyparhook での \inhibitglue 発行方法を変えたことでした。
\jsc@inhibitglue
の定義の中で \@tempa
という非ユニークな制御綴を使っていますが、これは showexpl.sty も使っていて、衝突しているのが原因のようです。
\@tempa
を \jsc@ig@str
等のユニークな(このマクロでしか使われない)制御綴に変えれば正常になります。
※一般的に、\everypar
や \aftergroup
などを介して“割り込んでくる”コードの中では非ユニークな制御綴の使用は絶対に避けるべきです。