zxjatype の和文に ulem の打ち消し線が使えない

zxjatype の和文に ulem の打ち消し線が使えない

- 片桐 智志 の投稿
返信数: 5

Ubuntu 18.04でTeX Live 2020 を使っています

beamerでスライドを作る際に, zxjatypeパッケージで和文を表示させXeLaTeXで処理しようとしたのですが, 以下のようなエラーが表示されました. zxjatype と ulem を併用するにはどうすればよいでしょう?

! Missing } inserted.
<inserted text> 
                }
l.11 \end{frame}

具体的には以下のようなtexファイルです.

\documentclass{beamer}
\usepackage[normalem]{ulem}

\usepackage{zxjatype}
\setjamainfont{Noto Serif CJK JP}

\begin{document}
\begin{frame}{}
\sout{strikethrough}\\
\sout{打ち消し線}
\end{frame}
\end{document}

バージョン・リビジョンは

  • beamer: ver. 3.58 r55046
  • zxjatype: ver. 0.7 r53500
  • ulem: r53365
  • XeTeX 3.14159265-2.6-0.999992

です. tlmgr で最新にアップデートしています

  • 欧文と和文の順序を変えても同じエラーがでました
  • 欧文だけならばエラーは発生しません
  • zxjatypeの読み込みとフォントの設定をコメントアウトすればpdfは生成され, 打ち消し線も表示されます (文字は表示されませんが)
  • frame環境を消すと, 以下のようなエラーになります
! Improper \prevdepth.
\newpage ...everypar {}\fi \par \ifdim \prevdepth 
                                                  >\z@ \vskip -\ifdim \prevd...
l.10 \end{document}

参考までに: BXjsclsでもエラーが発生しました. こちらはzxjatypeを使わなくとも, 和文に打ち消し線を適用すると2つ目と同様のエラーが発生しました

BXjsclsかまたは zxjatype と ulem の打ち消し線を組み合わせたものをXeLaTeXで処理したときだけエラーが起こるようです. (pLaTeXやLuaLateXでは問題なくulemを使用できます)

片桐 智志 への返信

Re: zxjatype の和文に ulem の打ち消し線が使えない

- 北見 けん の投稿
追試できる環境にないのですが、
添付の log ファイルについて。

添付の log ファイルは
!improper \prevdepth のエラーのものでした。
これは試しに frame 環境を消してみた場合のもので、
本当に解決したいのは ! Missing } inserted. のエラーの
方なのですよね。
そちらの方の log ファイルのほうが役に立つような気がします。
北見 けん への返信

Re: zxjatype の和文に ulem の打ち消し線が使えない

- 片桐 智志 の投稿

北見さん

すいません. 気をつけていたのですが間違えました. 今度こそframeのある場合のログを添付します

本当に解決したいのは ! Missing } inserted. のエラーの方なのですよね。

はい. ですが BXjscls もそれなりに使うことが多く, 似たようなエラーが出るためできればそちらも解決できればありがたいです.

片桐 智志 への返信

Re: zxjatype の和文に ulem の打ち消し線が使えない

- Akira Kakuto の投稿
umoline の \Midline を試行錯誤で使った例です:

\documentclass{beamer}
\usepackage{zxjatype}
\setjamainfont{Noto Serif CJK JP}
\usepackage{umoline}
\MidlineChar{\vrule width 0pt height 1.1ex depth 0pt}
\begin{document}
\begin{frame}{}
\Midline{strikethrough}\ \Midline{打ち消し線}
\end{frame}
\end{document}
片桐 智志 への返信

Re: zxjatype の和文に ulem の打ち消し線が使えない

- はやて (h20y6m) の投稿

理屈は全く分からないのですが、

\usepackage{xeCJKfntef}

を入れるとエラーにならなくなりました。


\sout{{打}{ち}{消}{し}{線}} のように一文字ずつ {} で囲むとエラーにならなくなるので xeCJK(?)がCJK-CJK文字間に挿入するトークンが影響しているのではないかと思います。


xeCJKfntef パッケージ xeCJK パッケージのサブパッケージで ulem パッケージを拡張?したものらしく \CJKsout のような命令も提供しているようです。(マニュアルが中国語で読めない……)

片桐 智志 への返信

Re: zxjatype の和文に ulem の打ち消し線が使えない

- 片桐 智志 の投稿

お二人ともありがとうございます. どちらも打ち消し線を使うことができました. また, BXjscls でもこの対処法は有効でした

情報の後出しになってしまい申し訳ないのですが, 現在私は R Markdown という, R言語とmarkdownで記述したファイルをpandocでtexに変換するソフトを使いbeamerスライドにする方法を検討しているため, さしあたってテンプレートにxeCJKfntefの読み込みを追加するだけで使えそうなはやて様の方法を使いたいと思います.

(zxjatypeの開発者にも報告したほうが良いのでしょうか?)