PR

Geminiからコピペで$\text{}$が表示されてしまう 解決法

Gemini

Geminiからコピペで$\text{}$が表示

私はこのブログの別記事でJava silverの問題集を作っている。この解説はGeminiに頼っている。Geminiの出力結果をWordpressの記事作成ページのカスタムHTMLに貼り付けて編集している。

Geminiのアウトプット(青いところをコピーした)

昔は大丈夫だったが、最近(2025年10月16日から)、Geminiの記述(上写真)ではそんなことがないのに貼り付けすると、

実行結果の分析変数の初期状態は $\text{p} = 0$ で、リスト $\text{i}$ は $\text{[0, 1, 2, 3, 4]}$ です。1回目 (p = 0)b:for ループが開始します。$\texttt{System.out.print(“;”)}$ が実行されます。出力: ;c:for ループが開始します($\text{j}$は$0$のまま)。最初の $\text{for(k:i)}$: $\text{k=0}$ のとき、$\text{k\%2==1}$ は偽なので $\texttt{System.out.print(k)}$ で 0 を出力します。$\text{k=1}$ のとき、$\text{k\%2==1}$ は真なので $\texttt{break}$ でこの内側のループを抜けます。

上のようになってしまう。英字表記のところがすべて$\text{}$などで囲まれている。

問題集を作りはじめてから2週間超で今までそんなことなかった。急にこの症状が出てどんな問題の解説を頼んでもそうなってしまった。

スマホでもパソコンでも、貼り付け先が、ブログ本文でも、メモ帳でも同じである。

解決へ

Geminiに原因は何なのかしつこくきいたところ日本語と、英字でフォントが異なる点が原因なのではないかという結論に至った。

ウェブで調べたところ、\text{}などはLaTex(ラテフもしくはラテック)という文書作成システムにおけるコードらしい。ワードで作成するような文書をコードを書いて出力させて作るらしい。論文などの作成でよく使われてきたものらしい(参考)。

\(フォントの種類){本文}

上のようにフォントの種類を指定して書くと{}で囲まれた本文が指定のフォントになるものらしい。太字指定などもできるようだ(参考)。

なぜコピペしたときにこのタグが追加されてしまうのかは私にはわからなかった。

そこでGeminiに答えるときは単一のフォントを使用してもらうように頼んだ。そうすると、

上のような結果が得られ、青い部分をカスタムHTMLに貼り付けると下のようになった。

最初のループ実行 (do-while / ラベル a)do-while(true) ループ(ラベル a)の最初の繰り返しが始まります。内部の for(;;) ループ(ラベル b)の開始このループは無限ループですが、内部の制御文で脱出します。System.out.print(“;”); の実行出力は ; となります。内部の for(int j=0; j<1;) ループ(ラベル c)の開始このループは j が $0$ の間、更新処理がないため、本来なら無限ループになりますが、内部の制御文で脱出します。

これで改善されたしかし、数値などが、$0$、のようにで囲まれてしまう。そこで、追加で答えるときはすべての数値や変数も文字列として表示してもらうように頼んだ。

1回目の do-while ループ(ラベル a) 無限 for ループ(ラベル b)に入ります。 System.out.print(“;”); が実行されます。 現在の出力は ; です。 for(int j=0; j<1;) ループ(ラベル c)に入ります。 最初の拡張 for ループ(for(int k:i)) k が 0 の場合: 0 % 2 == 1 は偽です(0 は奇数ではない)。 else 側で System.out.print(k);、つまり 0 を出力します。 現在の出力は ;0 です。

そうすると思った通りの結果が得られた。

しかしまた何日か経って同じチャット欄でまた同様な症状が生じてしまった、フォントを1種類しか使わないように、LaTexタグがコピペの際に表示されないように頼んでも、どう頑張っても改善されない。Gemini自身に聞いてもわからない。

そこでチャットを新規作成してみた。そしてもう一度フォントを1種類しか使わないように頼んでみた。そうすると、なんと、改善された。

ちなみに改行をそのまま表示したい場合は、下のように<pre></pre>で本文を囲んでカスタムHTMLに貼り付けるとよい。

<pre>1回目の do-while ループ(ラベル a)
無限 for ループ(ラベル b)に入ります。

System.out.print(";"); が実行されます。

現在の出力は ; です。

for(int j=0; j<1;) ループ(ラベル c)に入ります。

最初の拡張 for ループ(for(int k:i))

k が 0 の場合:

0 % 2 == 1 は偽です(0 は奇数ではない)。

else 側で System.out.print(k);、つまり 0 を出力します。

現在の出力は ;0 です。</pre>
1回目の do-while ループ(ラベル a)
無限 for ループ(ラベル b)に入ります。

System.out.print(";"); が実行されます。

現在の出力は ; です。

for(int j=0; j<1;) ループ(ラベル c)に入ります。

最初の拡張 for ループ(for(int k:i))

k が 0 の場合:

0 % 2 == 1 は偽です(0 は奇数ではない)。

else 側で System.out.print(k);、つまり 0 を出力します。

現在の出力は ;0 です。

まとめ

なぜ急にGeminiが問題のアウトプットを出すようになったのかわからない。

私とのやり取りから学んだのだろうか?

最後に、私はLaTexについて今回はじめて知った素人である。Wordpressについても普通にブログを書くだけで別に詳しくない。

もし、私の記述に間違い、もしくはもっとスマートな解決策があるのであれば教えていただきたい。

コメント