Latex(VAR) 指令在 Latex 顯示時將其他連接的字串轉換為數學模式

Latex(VAR) 指令在 Latex 顯示時將其他連接的字串轉換為數學模式

在乳膠中使用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}

有沒有辦法阻止聖人將整個字串轉換為乳膠數學模式,並且仍然能夠將整個句子保存在一個變數中,並保持乳膠內容的正確數學顯示(例如,將其顯示為實際分數)字串「11/ 2”)。

要先明確的是,我的具體要求是:

  1. 將字串與正確渲染的數學連接起來(不一定通過 Latex() 命令,但我沒有看到任何其他有意義的選項?)並且所有單獨的部分都正確渲染;字串作為字串,數學作為實際數學
  2. 將以上內容儲存到單一聖人變數;與以某種順序呼叫一系列變數來實現結果相反。

答案1

根據 CTAN 上發布的文檔這裡,您會發現從第 6 頁開始有巨集\sage\sagestr\percent\sageplot。宏\sage適用於數值數據,宏\sagestr適用於字串數據。我已經調整了您的程式碼,以便它使用\sagestr.為了處理 (a = 11/2) 中的數字數據,我已使用原始字串將其添加到您的字串中,這樣斜杠就不會引起問題。這是透過在你的數字上使用numerator()denominator()來確定要產生 LaTeX 分數的整數來完成的。

\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 中的輸出為:

在此輸入影像描述

編輯:由於您的評論指定您希望將分數插入字串中,因此我編輯了程式碼來執行此操作。

相關內容