Der Befehl latex(VAR) konvertiert andere verknüpfte Zeichenfolgen in den Mathemodus, wenn Latex sie anzeigt

Der Befehl latex(VAR) konvertiert andere verknüpfte Zeichenfolgen in den Mathemodus, wenn Latex sie anzeigt

Verwendung von Sagetex in Latex; es scheint, dass die Verwendung des Befehls latex() alle an diesen Begriff angehängten Zeichenfolgen in den Mathematikmodus und nicht in Zeichenfolgen konvertiert. Siehe MWE unten:

\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}

Gibt es eine Möglichkeit, Sage daran zu hindern, die gesamte Zeichenfolge in den Latex-Mathematikmodus zu konvertieren und trotzdem den gesamten Satz in einer Variablen speichern zu können und gleichzeitig die korrekte mathematische Anzeige des Latex-Inhalts beizubehalten (z. B. indem er als tatsächlicher Bruch statt als Zeichenfolge „11/2“ angezeigt wird)?

Um es klar zu sagen, meine spezifischen Anforderungen sind:

  1. Lassen Sie einen String mit korrekt wiedergegebenen mathematischen Werten verketten (nicht unbedingt über den Befehl latex(), aber ich sehe keine anderen sinnvollen Optionen?) und alle Einzelteile korrekt wiedergeben; den String als Strings und die mathematischen Werte als echte mathematische Werte.
  2. Speichern Sie die oben genannteneine einzelne Sage-Variable; im Gegensatz dazu, eine Folge von Variablen in einer bestimmten Reihenfolge aufzurufen, um das Ergebnis zu erzielen.

Antwort1

Laut der auf CTAN veröffentlichten DokumentationHier, ab Seite 6 finden Sie die Makros \sage, \sagestr, \percent, und \sageplot. Das \sageMakro ist für numerische Daten und \sagestrfür String-Daten. Ich habe Ihren Code so angepasst, dass er verwendet \sagestr. Um numerische Daten in (a = 11/2) zu verarbeiten, habe ich es Ihren Strings hinzugefügt, indem ich einen Rohstring verwendet habe, damit der Schrägstrich kein Problem verursacht. Dies wird erreicht, indem numerator()und denominator()auf Ihre Zahl angewendet werden, um zu bestimmen, welche Ganzzahlen in den LaTeX-Bruch eingehen sollen.

\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}

Die Ausgabe in Cocalc ist:

Bildbeschreibung hier eingeben

BEARBEITEN: Da Ihr Kommentar angibt, dass Sie den Bruch in die Zeichenfolge einfügen möchten, habe ich meinen Code entsprechend bearbeitet.

verwandte Informationen