This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Manipulieren von Notebooks /

Notebooks als Mathematica-AusdrückeManipulieren der Benutzeroberfläche vom Kern aus

2.10.3 Manipulieren von Notebooks vom Kern aus

Wenn einfache Operationen an Mathematica-Notebooks vorgenommen werden sollen, dann wird es normalerweise bequemer sein, wenn man die interaktiven Fähigkeiten der gewöhnlichen Mathematica-Benutzeroberfläche einsetzt. Wenn aber kompliziertere und systematischere Operationen durchgeführt werden sollen, dann wird man dazu meistens eher den Kern einsetzen wollen.

Funktionen, die die Notebook-Objekte liefern, die zu bestimmten Notebooks gehören

Innerhalb des Mathematica-Kerns werden Notebooks, die in der Benutzeroberfläche geöffnet sind, als Notebook-Objekte der Form NotebookObject[fe, id] geführt. Das erste Argument von NotebookObject spezifiziert das FrontEndObject für die Benutzeroberfläche, in der das Notebook angesiedelt ist, während das zweite Argument dem Notebook eine eindeutige Seriennummer zuordnet.

Hier ist ein Notebook namens Example.nb.

Dies findet das entsprechende Notebook-Objekt in der Benutzeroberfläche.

In[1]:= Notebooks["Example.nb"]

Out[1]={NotebookObject[<<Example.nb>>]}

Dies bringt den Ausdruck, der das Notebook entspricht in den Kern.

In[2]:= NotebookGet[First[%]]

Out[2]=Notebook[{Cell[Erste Überschrift, Section],
Cell[Zweite Überschrift, Section]}]

Dies ersetzt jeden Fall der Zeichenkette "Section" by "Text".

In[3]:= % /. "Section" -> "Text"

Out[3]=Notebook[{Cell[Erste Überschrift, Text],
Cell[Zweite Überschrift, Text]}]

Diese schafft ein neues, modifiziertes Notebook in der Benutzeroberfläche.

In[4]:= NotebookPut[%]

Out[4]={NotebookObject[<<Untitled-1.nb>>]}

Hier ist ein Notebook, das gerade das ausgewählte Notebook in der Benutzeroberfläche ist.

Dies liefert das Notebook-Objekt zu dem in der Benutzeroberfläche gewählten Notebook.

In[5]:= SelectedNotebook[ ]

Out[5]=-NotebookObject-

Dies holt den Ausdruck für das gewählte Notebook in den Kern.

In[6]:= NotebookGet[%]

Out[6]=

Dies ersetzt jedes Vorkommen der Zeichenkette "Section" durch die Zeichenkette "Text".

In[7]:= % /. "Section" -> "Text"

Out[7]=

Dies ersetzt das gegenwärtig ausgewählte Notebook durch die modifizierte Form.

In[8]:= NotebookPut[%, SelectedNotebook[ ]]

Austauschen kompletter Notebook-Ausdrücke zwischen Kern und Benutzeroberfläche

Will man umfangreiche Manipulationen an einem bestimmten Notebook vornehmen, so wird es zumeist von Vorteil sein, mit NotebookGet das ganze Notebook als einen einzelnen Ausdruck in den Kern zu holen. Wenn Sie stattdessen aber eine Reihe kleinerer Operationen an einem Notebook vornehmen wollen, ist es meistens besser, das Notebook in der Benutzeroberfläche zu belassen und dann spezielle Anweisungen vom Kern zur Benutzeroberfläche zu senden, die der Benutzeroberfläche mitteilen, welche Operationen durchzuführen sind.

Mathematica ist so konstruiert, daß man alles, was sich in der Benutzeroberfläche interaktiv an einem Notebook vornehmen läßt, auch durch die Übertragung geeigneter Anweisungen vom Kern zur Benutzeroberfläche erledigen kann.

Auffinden und Einstellen von Notebook-Optionen

Dies liefert die Einstellung der WindowSize-Option für Ihr gegenwärtig gewähltes Notebook.

In[9]:= Options[SelectedNotebook[ ], WindowSize]

Out[9]=

Dies ändert die Größe des gegenwärtig gewählten Notebooks auf dem Bildschirm.

In[10]:= SetOptions[SelectedNotebook[ ], WindowSize -> {250, 100}]

Out[10]={WindowSize {250., 100.}}

Innerhalb eines geöffneten Notebooks gibt es für die Benutzeroberfläche immer eine aktuelle Auswahl. Die Auswahl kann beispielsweise aus einer Textregion innerhalb einer Zelle oder aus einer vollständigen Zelle bestehen. Auf dem Bildschirm ist die Auswahl normalerweise durch eine Form der Hervorhebung gekennzeichnet. Die Auswahl kann ebenso zwischen zwei Zeichen eines Textes oder zwischen zwei Zellen sein. In diesen Fällen ist die Auswahl normalerweise durch einen vertikalen oder horizontalen Einfügebalken gekennzeichnet.

Man kann die aktuelle Auswahl in einem geöffneten Notebook durch Anweisungen, die vom Kern kommen, modifizieren.

Bewegen der aktuellen Auswahl in einem Notebook

Einheiten, die zur Festlegung der Auswahl verwendet werden

Hier ist ein einfaches Notebook.

Dies sorgt dafür, daß nb zu dem Notebook-Objekt wird, das zum gegenwärtig ausgewählten Notebook gehört.

In[11]:= nb = SelectedNotebook[ ];

Dies bewegt die aktuelle Auswahl innerhalb des Notebooks so, daß sie zum nächsten Wort wird.

In[12]:= SelectionMove[nb, Next, Word]

Dies erweitert die Auswahl auf die ganze erste Zelle.

In[13]:= SelectionMove[nb, All, Cell]

Dies verschiebt die Auswahl an das Ende des gesamten Notebooks.

In[14]:= SelectionMove[nb, After, Notebook]

Durchsuchen von Notebook-Inhalten

Dies bewegt die aktuelle Auswahl zur Position des vorherigen Auftretens des Wortes cell.

In[15]:= NotebookFind[nb, "Zelle", Previous]

Out[15]=NotebookSelection[-NotebookObject-]

Der Buchstabe erscheint nicht im aktuellen Notebook. Deswegen wird $Failed zurückgegeben und die Auswahl nicht bewegt.

In[16]:= NotebookFind[nb, "\[Alpha]", Next]

Out[16]=

Mögliche Zellelemente, die durch NotebookFind gesucht werden können

Bei der Erstellung großer Notebooks erweist es sich oft als günstig, Vermerke einzufügen, die normalerweise nicht angezeigt werden, die aber bestimmte Zellen so markieren, daß sie mit NotebookFind gefunden werden können. Vermerke für Zellen können Sie entweder interaktiv mit der Benutzeroberfläche oder durch explizites Festlegen der CellTags-Zelloption einfügen.

Globales Auffinden von Zellen in Notebooks

Wenn man einen Hyperlink in einem Notebook verfolgt, wird Mathematica die Funktion NotebookLocate aufrufen. Der Menübefehl Hyperlink erstellen (Create Hyperlink) konstruiert das geeignete NotebookLocate als Teil des Skriptes eines bestimmten Hyperlink-Knopfes.

Schreiben und Lesen in Notebooks

NotebookWrite[obj, daten] arbeitet ähnlich wie eine Einsetzen (Paste)-Operation der Benutzeroberfläche: es ersetzt die aktuelle Auswahl in Ihrem Notebook durch daten. Wenn die aktuelle Auswahl eine Zelle ist, ersetzt NotebookWrite[obj, daten] die Zelle durch daten. Wenn die aktuelle Auswahl zwischen zwei Zellen liegt, dann erzeugt NotebookWrite[obj, daten] jedoch eine geeignete neue Zelle oder geeignete neue Zellen.

Hier ist ein Notebook mit einem ausgewählten Wort.

Dies ersetzt das gewählte Wort durch neuen Text.

In[17]:= NotebookWrite[nb, "<<eingefügter Text>>"]

Dies bewegt die aktuelle Auswahl genau hinter die erste Zelle im Notebook.

In[18]:= SelectionMove[nb, After, Cell]

Dies fügt jetzt eine Textzelle hinter der ersten Zelle im Notebook ein.

In[19]:= NotebookWrite[nb,
Cell["Diese Zelle enthält Text.", "Text"]]

Dies sorgt dafür, daß die aktuelle Auswahl zur nächsten Zelle im Notebook wird.

In[20]:= SelectionMove[nb, Next, Cell]

Dies liest die aktuelle Auswahl und gibt sie als Ausdruck im Kern zurück.

In[21]:= NotebookRead[nb]

Out[21]=

NotebookWrite[obj, daten] entfernt die aktuelle Auswahl und ersetzt sie durch daten. Aber insbesondere dann, wenn Paletten konstruiert werden, ist es oft günstig, zuerst daten durch Einfügen der aktuellen Auswahl zu modifizieren. Dies kann mit Hilfe von Auswahl-Platzhalter und NotebookApply erreicht werden. Wenn das Zeichen , eingegeben als \[SelectionPlaceholder] oder EscapeKeysplEscapeKey, irgendwo in daten zum ersten Mal auftaucht, wird NotebookApply dieses Zeichen durch die aktuelle Auswahl ersetzen.

Hier ist ein einfaches Notebook mit einer aktuellen Auswahl, die dem Inhalt einer Zelle entspricht.

In[22]:= nb = SelectedNotebook[ ] ;

Dies ersetzt die aktuelle Auswahl durch eine Zeichenkette, die eine Kopie ihrer vorherigen Form enthält.

In[23]:= NotebookApply[nb, "x + 1/SelectionPlaceholder"]

Operationen mit der aktuellen Auswahl

Dies sorgt dafür, daß die aktuelle Auswahl die gesamte Zelle umfaßt.

In[24]:= SelectionMove[nb, All, CellContents]

Dies evaluiert die aktuelle Auswahl an Ort und Stelle.

In[25]:= SelectionEvaluate[nb]

Mit SelectionEvaluate kann einem Notebook Material entnommen und es zur Evaluierung dem Kern übergeben werden. Für sich allein genommen, überschreibt SelectionEvaluate jedoch immer das gewählte Material. Bei Verwendung von Funktionen wie SelectionCreateCell kann man genauso wie in einer Mathematica-Standard-Session eine Aufzeichnung der aufeinanderfolgenden erzeugten Formen erhalten.

Dies sorgt dafür, daß die aktuelle Auswahl die gesamte Zelle umfaßt.

In[26]:= SelectionMove[nb, All, Cell]

Dies erzeugt eine neue Zelle und kopiert die aktuelle Auswahl hinein.

In[27]:= SelectionCreateCell[nb]

Dies hüllt den Inhalt der aktuellen Zelle mit der Funktion Factor ein.

In[28]:= NotebookApply[nb, "Factor[SelectionPlaceholder]"]

Dies evaluiert den Inhalt der aktuellen Zelle und schreibt das Ergebnis in eine neue Zelle.

In[29]:= SelectionEvaluateCreateCell[nb]

Funktionen wie NotebookWrite und SelectionEvaluate belassen die aktuelle Auswahl genau hinter dem Material, das sie in das Notebook eingefügt haben. Man kann dann durch expliziten Einsatz von SelectionMove jederzeit die Auswahl verschieben. Funktionen wie zum Beispiel NotebookWrite und SelectionEvaluate können außerdem ein zusätzliches Argument haben, welches festlegt, wo die aktuelle Auswahl sein soll, nachdem die Funktionen ihr Werk vollbracht haben.

Durchführen von Operationen und Festlegen der neuen aktuellen Auswahl

Spezifikationen für die neue aktuelle Auswahl

Hier ist ein leeres Notebook.

In[30]:= nb = SelectedNotebook[ ] ;

Dies schreibt 10! in das Notebook und macht die aktuelle Auswahl zu dem, was geschrieben wurde.

In[31]:= NotebookWrite[nb, "10!", All]

Dies evaluiert die aktuelle Auswahl, erzeugt eine neue Zelle für das Ergebnis und macht die aktuelle Auswahl zum Gesamtergebnis.

In[32]:= SelectionEvaluateCreateCell[nb, All]

Dies hüllt die aktuelle Auswahl mit FactorInteger ein.

In[33]:= NotebookApply[nb, "FactorInteger[SelectionPlaceholder]", All]

Dies evaluiert die aktuelle Auswahl und beläßt die Auswahl direkt vor dem Ergebnis.

In[34]:= SelectionEvaluate[nb, Before]

Dies fügt an der Position der aktuellen Auswahl zusätzlichen Text ein.

In[35]:= NotebookWrite[nb, "a = "]

Auffinden und Festlegen von Optionen für ganze Notebooks und für die aktuelle Auswahl

Mache eine vollständige Zelle zur aktuellen Auswahl.

In[36]:= SelectionMove[nb, All, Cell]

Lege einen Rahmen um die Zelle herum, die die aktuelle Auswahl darstellt.

In[37]:= SetOptions[NotebookSelection[nb], CellFrame->True]

Operationen mit ganzen Notebooks

Ruft man NotebookCreate[ ] auf, so erscheint ein neues leeres Notebook auf dem Bildschirm.

Die Ausführung von Anweisungen wie SetSelectedNotebook und NotebookOpen bringt es in der Regel mit sich, daß die Mathematica-Benutzeroberfläche die Fenster, die man sieht, wechselt. Manchmal möchte man vielleicht ein Notebook manipulieren, ohne daß es je auf dem Bildschirm angezeigt wird. Dies wird erreicht, indem man bei NotebookOpen oder NotebookCreate die Option Visible->False angibt.

Notebooks als Mathematica-AusdrückeManipulieren der Benutzeroberfläche vom Kern aus