\section{}内で$\boldsymbol{X}$が存在するとyperrefパッケージが使えない

\section{}内で$\boldsymbol{X}$が存在するとyperrefパッケージが使えない

- matushiro 97 の投稿
返信数: 5

\section{}内で\boldsymbol{}を使っているときに,hyperrefパーケージを有効にするとエラーが発生します.
添付の,test-hyperref.texで,"\usepackage{hyperref}"をコメントアウトしているときは全ての文章がコンパイルできて表示できます.
しかし,コメントアウトを外して\usepackage{hyperref}を有効にすると,最後の"\section{テスト$\boldsymbol{X}$"でエラーが発生します.
hyperrefパッケージは,\section{}内の$\boldsymbol{X}$と両立しないようですが,解決策があればご教示ください.

matushiro 97 への返信

Re: \section{}内で$\boldsymbol{X}$が存在するとyperrefパッケージが使えない

- Yamamoto Munehiro "munepi" の投稿
安直な結論のみをお伝えしますと、
\usepackage{hyperref}
のとき、

\texorpdfstring{LaTeX内の文字列}{PDF栞内の文字列}

というコマンドが使えるようになります。
したがいまして、該当箇所は、

\section{テスト\texorpdfstring{$\boldsymbol{X}$}{𝑿}}

と書けばよいことになります。

----------

余談:
bmパッケージにおいて、

1. \bmをロバストなコマンドとして定義しています。
2. \boldsymbolコマンドは\bmコマンドとなります。

このとき、\tableofcontentsによる目次(.toc)内およびhyperrefによるPDF栞(.out)内には、それぞれ\bm{X}の文字列が入ります。
ところがPDF栞内で\bm{X}はplainな文字列でないので、\bm{X}をどうにかする必要があります。
上記のように\texorpdfstringを使うと、LaTeX文章内で本件を解消できます。

ほかの方法としては、PDF栞に対するhook内で\bmコマンドをどのような文字に開くのか教えてあげると、上述の\texorpdfstringを使わなくても、本件のエラーに遭遇しないようにもできます。
Yamamoto Munehiro "munepi" への返信

Re: \section{}内で$\boldsymbol{X}$が存在するとyperrefパッケージが使えない

- matushiro 97 の投稿
munepiさま
ご回答ありがとうございます
\texorpdfstring{$\boldsymbol{X}$}{𝑿}}
の最後の𝑿
は通常のX ではダメで太字斜体にする必要がありますか?
その場合どうすればプレインテキストに太字 斜体の X を記入できますか
よろしくお願いします
matushiro 97 への返信

Re: \section{}内で$\boldsymbol{X}$が存在するとyperrefパッケージが使えない

- Yamamoto Munehiro "munepi" の投稿
> 最後の𝑿は通常のX ではダメで太字斜体にする必要がありますか?
もちろん、必要ないです。
すべての数式文字もとい数式をPDF栞中に表現できようもないですから、単純に
\texorpdfstring{$\bm{X}$}{X}
で十分だと思います。

なお、Unicode Character “𝑿” (U+1D47F) は、Unicode Block “Mathematical Alphanumeric Symbols”に属します。
手元では、日本語入力の「X」の変換で「𝑿」を打てるようにしています。
matushiro 97 への返信

Re: \section{}内で$\boldsymbol{X}$が存在するとyperrefパッケージが使えない

- matushiro 97 の投稿

munepi様

1.\texorpdfstringで解決できました.ありがとうございます.
2.最後の{}に入れる文字は何でもいいように見えます.添付の,test-hyperref_texorpdf.texで2つの書き方を調べましたが,両方とも意図したとおりに表示されました.\subsection{技術面の到達可能領域\footnote{本説と次の「面移動」の2節では,図を簡単にするために\texorpdfstring{$\boldsymbol{C}$}{C}と\texorpdfstring{$\boldsymbol{\hat{C}}$}{\hat{C}} を区別しない.}}

\subsection{技術面の到達可能領域\footnote{本説と次の「面移動」の2節では,図を簡単にするために\texorpdfstring{$\boldsymbol{C}$}{C}と\texorpdfstring{$\boldsymbol{\hat{C}}$}{C} を区別しない.}}%最後はCのまま

3.ところが,test用で成功したコード
\subsection{技術面の到達可能領域\footnote{本説と次の「面移動」の2節では,図を簡単にするために\texorpdfstring{$\boldsymbol{C}$}{C}と\texorpdfstring{$\boldsymbol{\hat{C}}$}{\hat{C}} を区別しない.}}
を,本番論文用のファイルの該当箇所にコピーしてコンパイルするとエラーが発生しました.
原因がわかりません.preumbleで色々なパッケージを導入しているので,干渉しているのでしょうか.本番論文で使っているpreumbleファイルをアップします.もし何かわかりましたらご教示ください.

matushiro 97 への返信

Re: \section{}内で$\boldsymbol{X}$が存在するとyperrefパッケージが使えない

- matushiro 97 の投稿
preamble.texをest-hyperref_texorpdf.texの中にコピペしてコンパイルしたら問題なくできました.パッケージ間の干渉ではないようです.
本番論文を小パイルしたときのエラーログを添付します.コンパイル前に補助ファイルは削除しております.