Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- リチャーズ キース の投稿
返信数: 10
次のようなソースファイル
--------------------------------------------------------
\documentclass[dvipdfmx,handout]{beamer}
\usetheme{Madrid}
\usecolortheme{default}
\useoutertheme{default}
\usefonttheme{default}
\setbeamertemplate{navigation symbols}{}
\usepackage{otf}
\renewcommand{\kanjifamilydefault}{\gtdefault}%和文用
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{舞姫と冥途}
\author{森\UTF{9DD7}外,内田百\CID{8685}}
\date{2021年4月7日}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{frame}{\titlepage}\end{frame}
\end{document}
----------------------------------------------------------
を platex でコンパイルしようとするのですが,途中で止まってしまいます.
その log.file は以下の通りです:

----------------------------------------------------------
This is e-pTeX, Version 3.14159265-p3.8.3-191112-2.6 (utf8.sjis) (TeX Live 2020/W32TeX) (preloaded format=platex)
restricted \write18 enabled.
Source specials enabled.
entering extended mode
(./example.tex
pLaTeX2e <2020-04-12> (based on LaTeX2e <2020-02-02> patch level 5)
L3 programming layer <2020-09-24>
(c:/w32tex64/share/texmf-dist/tex/latex/beamer/beamer.cls
Document Class: beamer 2020/07/22 v3.59 A class for typesetting presentations
(c:/w32tex64/share/texmf-dist/tex/latex/beamer/beamerbasemodes.sty
(c:/w32tex64/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty)
....
....
....
(c:/w32tex64/share/texmf-dist/tex/latex/beamer/beamerouterthemeinfolines.sty))
(c:/w32tex64/share/texmf-dist/tex/platex/japanese-otf/otf.sty
(c:/w32tex64/share/texmf-dist/tex/platex/japanese-otf/ajmacros.sty))
! Use of \begin doesn't match its definition.
\[ ->\begin {<br /> equation*}
l.11 \author{森\UTF{9DD7}外,内田百\CID{8685}}
----------------------------------------------------------

なお,これは pLaTeX2e <2019-10-01>+1 ではコンパイルできます.
どうしてなのか,その理由と対処法をご教示願いたらと思い投稿します.

よろしくお願いいたします.
リチャーズ キース への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- m c の投稿
理由についてはすみません,わかりませんが,対処方法ということでしたら
・upLaTeXで処理
・\UTF{},\CID{}を使わず直接当該文字を入力
すれば可能です(ソースファイルもUTF-8で保存).

\documentclass[dvipdfmx,handout,uplatex]{beamer}

\author{森鷗外,内田百閒}


なお,検証はTeX Live 2021(M1 mac mini, Big Sur)で行いました.
ですので,Windowsで「\UTF{},\CID{}を使わず直接当該文字を入力」ができるかどうかが私にはわからないです.
リチャーズ キース への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- はやて (h20y6m) の投稿

beamer は \title\author に指定した文字列を PDF のプロパティに設定します。 この時これらの文字列にマクロが含まれているとエラーになることがあります。

\author{森\texorpdfstring{\UTF{9DD7}}{鴎}外,内田百\texorpdfstring{\CID{8685}}{間}}

のように \texorpdfstring を使えば回避できます。

あるいは beamer のオプションに usepdftitle=false を指定すればこの機能自体を無効化できます。

リチャーズ キース への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- tat tsan の投稿
\usepackage{pxjahyper}
を追加すれば問題なくタイプセットできるようです。
tat tsan への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- tat tsan の投稿
\RequirePackage{plautopatch}
をファイルの先頭に書いても pxjahyper.sty をロードしてくれるハズですが、
この場合はタイプセットに失敗しますね。
リチャーズ キース への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- ut の投稿

# 対処法については既にいくつもご提案がありますので、原因を探ってみようと
# したのですけれど、結局辿り着けませんでした…。

> なお,これは pLaTeX2e <2019-10-01>+1 ではコンパイルできます.

とのことですので、お示しのソースを私の手元(※1)で試してみましたら:

  \RequirePackage[2020/02/02]{platexrelease}

だとダメで、

  \RequirePackage[2020/02/01]{platexrelease}

だと通りました(※2)。

で、pldoc の 「変更履歴」 のそのあたりの日付けを見てみますと:

----- pldoc [2020-04-12]: 変更履歴 -----------------------------------
2020/02/01 plfonts.dtx v1.6v

\mdseries@gt: LATEX がmweights
パッケージを基にしたシリーズ
のカスタム設定を導入したので、
これをサポート(sync with
ltfssini.dtx 2019/12/17 v3.1e)
----- pldoc [2020-04-12]: 変更履歴 -----------------------------------

という記述があって、このあたりが原因のような気がします(← 当てずっぽう)。

該当箇所を見てみますと:

----- File b: plfonts.dtx Date: 2020/04/07 Version v1.7f ------------
LATEX2ε 2020-02-02では、欧文フォントについて「ファミリごとの実際のシリーズ
値を設定できる」という機能が導入されました(元はmweightsパッケージの機能)。
また、同時に「Computer ModernとLatin Modernの場合は互換性のため太字を
bxに、それ以外の欧文ファミリの場合は太字をbにする」という仕様変更も入りま
した。これに合わせて、pLATEX2ε の和文フォントにも同等の機能を追加し、和文
ファミリの太字もbxではなくbに変更しました。
% \changes{v1.6v}{2020/02/01}{\LaTeX{}がmweightsパッケージを基にした
%    シリーズのカスタム設定を導入したので、これをサポート
%    (sync with ltfssini.dtx 2019/12/17 v3.1e)}
----- File b: plfonts.dtx Date: 2020/04/07 Version v1.7f ------------

というような説明があります。

この仕様変更(2020/02/01)と、otf パッケージの定義(2019/04/01 v1.7b8)
との絡みなのでしょうか…?(※3)


# (※1)私の手元のシステムは:
#
#  pLaTeX2e <2020-04-12> (based on LaTeX2e <2020-02-02> patch level 5)
#  L3 programming layer <2020-07-17>
#  (c:/w32tex/share/texmf-dist/tex/latex/beamer/beamer.cls
#  Document Class: beamer 2020/05/06 v3.58 A class for typesetting presentations
#
#  (c:/w32tex/share/texmf-dist/tex/platex/japanese-otf/otf.sty
#  Package: otf 2019/04/01 v1.7b8 psitau, u0.25 ttk
#
# なので、質問者の方とかなり近い構成だと思います。


# (※2)でも、
#
#  Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
#  (hyperref)                removing `\begingroup' on input line 12.
#
# みたいな warning がいっぱい出て、pdftitle や pdfauthor は文字化けしています。


# (※3)例えば:
#
# \documentclass[dvipdfmx]{jsarticle}
# \usepackage{otf}
# \usepackage[pdftitle={森\UTF{9DD7}外,内田百\CID{8685}}]{hyperref}
# \begin{document}
# foo
# \end{document}
#
# という簡単なものを手元で試してみますと:
#
#  (c:/w32tex/share/texmf-dist/tex/platex/japanese-otf/ajmacros.sty
#  Package: ajmacros 2019/04/01 21:00 iNOUE Koich! <inoue@ma.ns.musashi-tech.ac.jp
#  >
#  \@tempcntc=\count176
#  \@tempcntd=\count177
#  \@tempcnte=\count178
#  \@tempcntf=\count179
#  ))
#  ! Argument of \reserved@b has an extra }.
#  <inserted text>
#                  \par
#  l.6 \begin
#            {document}
#
# と言われます。
#
# それで platexrelease で巻き戻すと、hyperref からの warning はいっぱい
# 出ますが、通ります(pdftitle は文字化けしています)。


ut への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- aminophen の投稿
plautopatch の作者,兼 pLaTeX の NFSS 更新者です。
下記2件について,帰宅後に検証してみます。

(1) tat tsan の投稿について

plautopatch の場合に pxjahyper が動いていない件については,
「hyperref 読込直後に pxjahyper をパッチロードする」
という挙動に変更したほうがよいように前々から感じています。
※いまのところ,このツイートのとおりの理由で
「\AtBeginDocument まで遅らせる」
という謎処置をとっています。これをやめて即読み込みにすれば改善するかもしれません。

(2) ut さんの投稿について

OTF パッケージの内部実装で \kanjishape が使われているところは
「新しくなった NFSS 上で(当時知られている)問題は起きていないが,潜在的に怪しい」
と感じていた部分が絡んでいるかもしれません。(参考:issue 7
aminophen への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- tanaka tanaka の投稿

便乗です。
1年ぐらい前のTeXLiveでは問題なかったと思うのですが

TeXLive2021で普通の漢字だけでも


\documentclass[uplatex,dvipdfmx]{jsarticle}

\usepackage[

pdftitle={日本語}, pdfauthor={日本語}, pdfsubject={日本語タイトル}, pdfkeywords={日本; 日本語}

]{hyperref}

\usepackage{pxjahyper}

\begin{document}

\section{はじめ}

はじめ

\section{おわり}

おわり

\end{document}


をタイプセットするとpdfファイルのタイトルやキーワード等が文字化けします。しおりは大丈夫です。


tanaka tanaka への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- tat tsan の投稿
> pdfファイルのタイトルやキーワード等が文字化けします。しおりは大丈夫です。

hyperref.sty のオプションに unicode=false を指定すれば、文字化けしないようです。
デフォルトが true に変更されたようです。
tat tsan への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- tanaka tanaka の投稿
文字化け治りました。ありがとうございました!
tanaka tanaka への返信

Re: Beamer \author内で \UTF{...}, \CID{...} を使うとコンパイルできない

- tat tsan の投稿

作者のZRさんは unicode=true で正しく動かしたいとお考えのようです。詳しくは こちらを御覧ください。