latex(VAR)コマンドは、他の連結文字列をLaTeXが表示するときにmathemodeに変換します。

latex(VAR)コマンドは、他の連結文字列をLaTeXが表示するときにmathemodeに変換します。

ラテックスで sagetex を使用する。latex() コマンドを使用すると、その用語に連結された文字列が文字列ではなく数式モードに変換されるようです。以下の MWE を参照してください。

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
StartStr = 'Beginning string'
EndStr = 'trailing string.'
WorkingStr = StartStr + " and "+ EndStr
BrokeStr = StartStr + latex(11/2) + EndStr
\end{sagesilent}

Notice that "$\sage{StartStr}$", "$\sage{EndStr}$", and "$\sage{WorkingStr}$" are all printed as text.

But "$\sage{BrokeStr}$" converts the entire string into math-mode and breaks everything.
\end{document}

Sage が文字列全体を LaTeX 数式モードに変換するのを止め、かつ文全体を 1 つの変数に保存し、LaTeX コンテンツの正しい数学的表示を維持する (たとえば、文字列 '11/2' ではなく実際の分数として表示する) 方法はありますか。

明確に言えば、私の具体的な要件は次のとおりです。

  1. 文字列を適切にレンダリングされた数式と連結し(必ずしもlatex()コマンド経由ではありませんが、他に意味のあるオプションは見当たりません)、個々の部分をすべて正しくレンダリングします。文字列は文字列として、数式は実際の数式としてレンダリングします。
  2. 上記を保存してください単一のsage変数; 結果を得るために一連の変数を何らかの順序で呼び出すのとは対照的です。

答え1

CTANに掲載された文書によるとここ\sage、、、\sagestrおよび\percentというマクロがあることがわかります (6 ページ目から) \sageplot。マクロ\sageは数値データ用で、マクロは\sagestr文字列データ用です。コードを調整して を使用しました\sagestr。数値データを (a = 11/2) で処理するために、スラッシュが問題を引き起こさないように、生の文字列を使用して を文字列に追加しました。これは、数値に および を使用して、LaTeX 分数を作成するために使用する整数を決定することによって行われnumerator()ますdenominator()

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
a = 11/2
StartStr = 'Beginning string'
EndStr = 'trailing string.'
WorkingStr = StartStr + " and "+ EndStr
BrokeStr = (StartStr + r" $\frac{%s}{%s}$ " + EndStr)%(a.numerator(),a.denominator())
\end{sagesilent}
Notice that \sagestr{StartStr}, \sagestr{EndStr}, and \sagestr{WorkingStr} are all printed as text.

Now \sagestr{BrokeStr} prints the entire string.
\end{document}

Cocalc の出力は次のとおりです。

ここに画像の説明を入力してください

編集: コメントで、分数を文字列に挿入したいと指定されているため、コードを編集してそのようにしました。

関連情報