質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

TeX

フリーの組版システムで、字や図版などの要素を紙面に配置するという作業をコンピュータで行います

Q&A

解決済

1回答

748閲覧

texで表のタイトルに%を表示させたい

man_

総合スコア45

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

TeX

フリーの組版システムで、字や図版などの要素を紙面に配置するという作業をコンピュータで行います

0グッド

0クリップ

投稿2022/01/24 08:42

やりたいこと

texの表タイトルに%を表示させたい。

困っていること

texで,\captionの括弧内に%と入力するとエラーが出力されます。
以下にコードを示します。
captionの括弧内に%が無い場合はエラーは出力されません。

また,%は\renewcommandでフォントを変更しています。

そこで,%を表タイトルで表示させる方法を教えてください。

エラーが出力されないコード

tex

1\begin{table}[p] 2 \caption{確率} 3 \end{table}

エラーが出力されるコード

tex

1\begin{table}[p] 2 \caption{確率\%} 3 \end{table}

エラー内容

error

1! TeX capacity exceeded, sorry [input stack size=5000]. 2\protect ->\noexpand \protect 3 \noexpand

tex

1\renewcommand{\%}{\textsf{\char`\%}}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

次のようなプリアンブル等で\newcommand*{\percent}{\%}とする方法でどうでしょうか?
次のようなプリアンブル等で\newcommand*{\percent}{\textsf{\char%}}`とする方法でどうでしょうか?

次のようにプリアンブル等で\newcommand*{\percent}{\textsf{\%}}とする方法でどうでしょうか?

latex

1... 2% \newcommand*{\percent}{\%} 3% \newcommand*{\percent}{\textsf{\char`\%}} 4\newcommand*{\percent}{\textsf{\%}} 5 6\begin{document} 7 8... 9 10% こんな感じで使う 11\begin{table}[p] 12 \caption{確率\percent} 13 \end{table} 14 15... 16 17% ただし,文字が続く時は{}を挟む 18\begin{table}[p] 19 \caption{確率\percent{}です} 20 \end{table} 21 22... 23 24\end{document}

あきらめて全角を使う方法もあるかもしれませんが…

投稿2022/01/24 11:27

編集2022/01/24 12:34
ujimushi_sradjp

総合スコア2091

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

man_

2022/01/24 15:49

回答ありがとうございます。 提案していただいた方法を試してみましたが,同じエラーが出力されました。 何が原因なんでしょうか?
ujimushi_sradjp

2022/01/24 16:14

https://texwiki.texjp.org/?TeX%20%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8 とか見ると,再帰的に`\%`を定義しているところがあるのではないでしょうか? 元々`\%`はエスケープシーケンス付きの`%`でコマンドではないので,どこかで`\%`を`\def`か`\newcommand`しているところがあって,再起処理的になっているところがあると思います。 まずそこをコメントアウトするのが先決でしょう。
ujimushi_sradjp

2022/01/24 17:22

なお「\renewcommand{\%}{\textsf{\char`\%}}」を生かしている限り,エラーは絶対になくなりません。 こちらでも同じようにエラーを再現できています。また,caption以外で使っても同じエラーになります。 \%を使って\%を定義しているのでコマンドを使った瞬間に再帰的に定義を行いすぐにスタックを使いつぶしてしまいます。 \%以外の別名で定義してやる必要があります。
man_

2022/01/24 17:27

返信ありがとうございます。 \renewcommand{\%}{\textsf{\char`\%}}をコメントアウトしたところ,エラーが解消されました。 しかし,上のrenewcommandで%のフォントを変えており,変更後のフォントを使用したいです。 また,renewcommandでフォントを変更した後では,\%は文章内では使用できるのですが,caption内で使用した場合にエラーが出力されます。 どのようにして,%のフォントを変更したらよろしいでしょうか? よろしくお願いします。
man_

2022/01/25 06:35

最初の回答で提示いただいた方法で実装出来ました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問