Bxjsartcleでpxcjkcatとparagraphを一緒に使えない

Bxjsartcleでpxcjkcatとparagraphを一緒に使えない

- Nakata Masato の投稿
返信数: 4
macでuplatexを使っているのですが,documentclassをbxjsarticleにするとパッケージpxcjkcatを使うと\paragraphでエラーが出て困っています.

環境は,
  • macOS 10.12.6
  • Tex Live 2017
  • uplatex -version #=> e-upTeX 3.14159265-p3.7.1-u1.22-161114-2.6 (utf8.uptex) (TeX Live 2017)
です.ミニマルなtexファイルは

% test.tex
\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard]{bxjsarticle}
\usepackage[prefernoncjk]{pxcjkcat}
\begin{document}
\paragraph{Hoge}
foga
\end{document}

で,これを $ uplatex test.tex とすると次の複数のエラーが出ます(各エラーはenterでスキップしています):

This is e-upTeX, Version 3.14159265-p3.7.1-u1.22-161114-2.6 (utf8.uptex) (TeX Live 2017) (preloaded format=uplatex)
restricted \write18 enabled.
entering extended mode
(./test.tex
pLaTeX2e <2017/07/29u01>+1 (based on LaTeX2e <2017-04-15>)
Babel <3.13> and hyphenation patterns for 84 language(s) loaded.
(/usr/local/texlive/2017/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
Document Class: bxjsarticle 2017/09/09 v1.6 BXJS document classes
(/usr/local/texlive/2017/texmf-dist/tex/latex/tools/calc.sty)
(/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/local/texlive/2017/texmf-dist/tex/latex/bxjscls/bxjscompat.sty)
(/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/ifpdf.sty)
(/usr/local/texlive/2017/texmf-dist/tex/latex/geometry/geometry.sty
(/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/ifvtex.sty)
(/usr/local/texlive/2017/texmf-dist/tex/generic/ifxetex/ifxetex.sty))
(/usr/local/texlive/2017/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
(/usr/local/texlive/2017/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def)))
(/usr/local/texlive/2017/texmf-dist/tex/latex/pxcjkcat/pxcjkcat.sty)
(./test.aux)
*geometry* detected driver: dvipdfm
! Argument of \bxjs@let@hchar@chr@ue@c has an extra }.
<inserted text>
\par
l.6 f
oga
?
Runaway argument?
! Paragraph ended before \bxjs@let@hchar@chr@ue@c was complete.
<to be read again>
\par
l.6 f
oga
?
! Extra }, or forgotten \endgroup.
<recently read> }

l.6 f
oga
?
! Undefined control sequence.
\jsJaChar ...bxjs@jachar \expandafter {\bxjs@tmpa
}\fi \endgroup
l.6 f
oga
?
[1] (./test.aux) )
Output written on test.dvi (1 page, 332 bytes).
Transcript written on test.log.

一応dviファイルが作られたので $ dvipdfmx test.dvi && open test.pdf で確認すると,「.Hoge fuga」とだけ書かれていました.Hogeはサンセリフ,fugaはローマンで.はドット(0x2e)です.

次に,

% case 1: without the option of pxcjkcat
\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard]{bxjsarticle}
\usepackage{pxcjkcat}
\begin{document}
\paragraph{Hoge}
foga
\end{document}

% case 2: with documentclass jsarticle instead
\documentclass[uplatex]{jsarticle}
\usepackage[prefernoncjk]{pxcjkcat}
\begin{document}
\paragraph{Hoge}
foga
\end{document}

% case 3: without paragraph
\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard]{bxjsarticle}
\usepackage[prefernoncjk]{pxcjkcat}
\begin{document}
foga
\end{document}

の各ケースとも期待通りの出力を得ました.

なぜ最初の場合のみエラーになるのでしょうか?
Nakata Masato への返信

Re: Bxjsartcleでpxcjkcatとparagraphを一緒に使えない

- 和田 勇 の投稿
手元にある TeXlive2017 で試したところ三つとも問題なくコンパイルできました。

提示されたログと比較すると三つの情報の違いがありました。


Nakata Masato さんのログ
>pLaTeX2e <2017/07/29u01>+1 (based on LaTeX2e <2017-04-15>)
>Babel <3.13> and hyphenation patterns for 84 language(s) loaded.
>Document Class: bxjsarticle 2017/09/09 v1.6 BXJS document classes


こちらで試した際のログ
pLaTeX2e <2017/10/28u01>+4 (based on LaTeX2e <2017-04-15>)
Babel <3.18> and hyphenation patterns for 84 language(s) loaded.
Document Class: bxjsarticle 2018/02/04 v1.7c BXJS document classes


手元に同じバージョンのものはないのですが、 2016 年版 に bxjsarticle 関連がありましたので試したところ case1 は問題なくコンパイルできました。

#差分を見たのですがどれが原因になったのかは今の所不明です。


質問の回答にはなっていないのですが、アップデートして試して見てはいかがでしょうか?


和田 勇 への返信

Re: Bxjsartcleでpxcjkcatとparagraphを一緒に使えない

- Nakata Masato の投稿
言われた通りbxjsclsをGitHubから取ってきてアップデートしましたが,ログは(bxjsarticleのバージョンとパス以外)変わりませんでした.
Nakata Masato への返信

Re: Bxjsartcleでpxcjkcatとparagraphを一緒に使えない

- Z. R. の投稿

BXjsclsのバグのようです。申し訳ありません。

BXjsclsでは、paragraph見出しの頭の“■”を常に(pxcjkcatで“■”を欧文扱いにしても)和文で出力するように調節していますが、その処理にバグがあるようです。

当面の回避策としては、

\usepackage[prefernoncjk]{pxcjkcat}

の後で \jsParagraphMark を再設定する、という方法があります。

\renewcommand\jsParagraphMark{\jachar{■}}