Formatierter Text in einem dynamischen oder manipulierten Steuerelement

  • Ich verwende ein Manipulate - Steuerelement, um verschiedene Berechnungen für dieselben vom Benutzer angegebenen Parameter anzuzeigen. Ich möchte die Ergebnisse für die vom Benutzer ausgewählte Berechnung anzeigen und auch etwas formatierten Text beschreiben, um zu beschreiben, wie ich zum Ergebnis gekommen bin.

    Ich habe den formatierten Text also als Test platziert in einer Cell gesetzt als Text und ordnet diese Zelle einer Variablen zu. Ich zeige dann in einem Table die Ergebnisse der Berechnung und der Textzelle. Ich stelle fest, dass der Text die Mathematica -Funktionen anzeigt, die zum Formatieren des Textes verwendet werden, anstatt nur den formatierten Text anzuzeigen.

    Wenn ich Verwenden Sie CellPrint für diese Textvariable. Ich kann die Zelle dazu bringen, dass sie korrekt im Notizbuch angezeigt wird. CellPrint gibt jedoch Null zurück, sodass ich den Wert nicht an meine Dynamic - oder Manipulate -Steuerelemente übergeben kann.

    Lassen Sie mich ein Beispiel für meinen Code zeigen:

     testText1 := 
     Cell[TextData[{Cell[
         BoxData[FormBox[SuperscriptBox["R", "*"], TraditionalForm]], 
         FormatType -> "TraditionalForm"], " = Rate of star formation = 10 "}], 
      "Text", CellChangeTimes -> {{3.547210260347546*^9, 3.547210296541616*^9}}]
    
    CellPrint[testText1]
    
    Manipulate[
     Switch[testStatChoice, 1, 
      testText1], {{testStatChoice, 1, 
       "Select Calculation"}, {1 -> "1: First Calculation Example"}, 
      ControlType -> PopupMenu}]
     

    Ich habe nach anderen Methoden oder Eigenschaften gesucht, die es mir ermöglichen, meine Textabsätze mit Gleichungen darin anzuzeigen ein Manipulate, aber noch keine Lösung gefunden.

    Edit: Ich gehe jetzt in die richtige Richtung. Eine abgespeckte Version von dem, was ich bisher habe, ist Folgendes:

    [Code-Beispiel gelöscht. Sehen Sie sich die endgültige Lösung unten an.]

    Meine Ausgabe betrifft den 2., 3. und 4. Absatz. Der Text wird in der nächsten Zeile fortgesetzt, es wird jedoch eingerückt.

    Edit2: Ich habe das Problem mit der Zeileneinzugsmethode mit RowBoxen gelöst, die auf einer anderen Zeile fortgesetzt werden, indem die RowBox mit einer StyleBox umwickelt und die Einstellung gesetzt wird LineIndent-Eigenschaft auf 0,0 für diese StyleBox.

    Möglicherweise haben Sie auch bemerkt, dass ich Leerzeichen für das Einrücken meiner Codezeilen verwendet habe. Das war hässlich und ich habe das durch AdjustmentBoxes ersetzt, bei denen BoxMargins so eingestellt ist, dass die Zeile nach meinen Vorstellungen eingerückt wurde.

    Ich werde meine große Code-Einfügung oben löschen und sie unten durch mein festes Endergebnis ersetzen. Ich habe immer noch ein Problem mit meinem letzten Absatz, aber ich denke

    02 June 2012
    AdamRichard
2 answers
  • Sie können Ihre gewünschte Ausgabe in Row einfügen und dann in DisplayForm.

     Manipulate[
     Switch[testStatChoice, 1, testText1], {{testStatChoice, 1, 
      "Select Calculation"}, {1 -> "1: First Calculation Example"}, ControlType -> PopupMenu},
    
     Initialization :> {testText1 := 
      Row[{SuperscriptBox["R", "*"]// TraditionalForm, " = ", "Rate of star formation", 
       " = ", 10}] // DisplayForm}]
     

    Im obigen Fall habe ich den Ausdruck in verschiedene Teile aufgeteilt, unter der Annahme, dass Sie in der Praxis einige Arbeit verrichten müssten, um jeden von ihnen zu erhalten. Aber wir hätten etwas wie

     testText1 := 
      Row[{SuperscriptBox["R", "*"]// TraditionalForm, " = Rate of star formation = 10"}] 
      // DisplayForm
     

    mit demselben Effekt verwenden können.

    Formatierter Text in einem dynamischen oder manipulierten Steuerelement

    29 May 2012
    Justin Walgran
  • Das Problem ist hier unabhängig von Manipulate oder Dynamic. Es geht darum, ein Cell -Objekt anzuzeigen, ohne eine CellPrint -Anweisung zu verwenden. testText1 an sich wird immer als Cell[...] angezeigt. Deshalb empfehle ich, den Ausdruck als etwas anderes zu rekonstruieren, nicht in Cell.

     testText1 := TraditionalForm@Row[{Superscript[R, "*"], " = Rate of star formation = 10 "}];
    
    testText1
     

    Formatierter Text in einem dynamischen oder manipulierten Steuerelement

    In einem Manipulate kann ein Wrapper Style erforderlich sein:

     Manipulate[
     Switch[testStatChoice, 1, 
      Style[testText1, "Panel"]], {{testStatChoice, 1, 
       "Select Calculation"}, {1 -> "1: First Calculation Example"}, 
      ControlType -> PopupMenu}]
     

    Formatierter Text in einem dynamischen oder manipulierten Steuerelement

    28 May 2012
    István Zachar