/latex/snippets — Snippets
Hinweis: Rahmen: 00-rahmen.md. Code:
packages/plugins/src/latex/client/(Snippetschirm.tsx,Snippetarbeitsplatz.tsx,snippetanfragen.ts), Einsetzkern inpackages/frontend/src/components/text/snippeteinsatz.ts.
Wofür
Der Ort, an dem Snippets angelegt, geändert und ausprobiert werden (LX07, N464). Ein Snippet ist ein Kürzel, das sich beim Tippen in eine längere Vorlage mit Sprungstellen verwandelt: Man schreibt den Trenner und den Namen (etwa ;fr) und bekommt \frac{}{} mit dem Cursor im Zähler. Die Snippets sind Daten, kein Code (Grundsatz 72): eine Grundmenge für alle Konten und darunter die eigenen des Kontos. Der Schirm gehört zum Bereich LaTeX und liegt als eigene Route neben der Befehlsliste (/latex/befehle), weil ein Snippet einen Rumpf mit eigener Schreibweise und eine Probe braucht, die in eine Zeile der Befehlsliste nicht passt.
Der Rumpf nutzt die Schreibweise von VS Code: $1, $2 … sind Sprungstellen in dieser Reihenfolge, $0 ist das Ende, ${1:Vorgabe} eine Stelle mit Vorgabetext, ${TM_SELECTED_TEXT} der markierte Text, \$ ein Dollarzeichen. Auswahllisten (${1|a,b|}), verschachtelte Vorgaben und andere Variablen sind Fehler, nicht Teil der Schreibweise. Dieselbe Schreibweise liest der Server; der Schirm benutzt für die Prüfung genau denselben Leser (leseRumpf aus @shared/handlers/latex/snippetRumpf).
Weg und Rahmen
| Route | /latex/snippets |
| Merkmal | wie /latex: LATEX, eigener Schalter, ab Werk aus |
| Knoten im Rechtebaum | gold.latex; Pflege der Grundmenge: Fähigkeit latex.befehle |
| Zimmer | das von /latex; die Seite ist ein zweiter Weg desselben Bereichs |
| Zugang | der Verweis „Snippets“ in der Kopfzeile von /latex/befehle, dorthin vom Knopf „Befehle und Snippets“ auf /latex; zurück führen „Befehle“ und „Texte“ |
Was man sieht
Links die Liste, rechts (am Telefon darüber) die Werkbank. Die Liste hat ein Suchfeld „Name, Wort oder Rumpf suchen…“ und zwei Abschnitte: Deine Snippets und Grundstock. Jede Zeile trägt links den Trenner und den Namen in Fira Code, darunter das Wort und wo das Snippet gilt (Formeln, Text oder beides). Die gewählte Zeile ist hervorgehoben; ihre Kennung steht in der Adresse (?id=), ein Neuladen behält sie. Die Zeilen trennt seit dem 10.10.2026 eine Haarlinie, und nur die gewählte trägt einen Grund; vorher war jede Zeile ein gerahmter Knopf (ES-261009-listen-flaechen-statt).
Die Werkbank ist ein Blatt mit der Überschrift ;name. Sie hat der Reihe nach:
- Das Formular: Name (mit dem Trenner davor), Wort, „Gilt in“ und den Rumpf in einem Textfeld in Fira Code.
- Die Fehlerliste unter dem Rumpf: Jeder Fehler steht an seiner Stelle. Eine Zeile nennt „Zeichen 4 bis 5“ als Knopf (er setzt den Zeiger im Rumpf dorthin), den Satz, was falsch ist und was zu tun ist, und den Ausschnitt mit der Stelle markiert; die Zeile selbst trägt seit dem 10.10.2026 keinen roten Strich links mehr (E11) — rot ist der Knopf mit der Stelle, und eine leere Stelle zeigt eine rote Einfügemarke. Das Textfeld ist dann als ungültig gekennzeichnet (
aria-invalid). - „So wird es eingesetzt“: Das Einsatzbild zeigt den Rumpf, wie er im Text steht, mit den Sprungstellen als Marken und, bei Stellen mit Vorgabe, dem Vorgabetext; darunter die Sprungfolge („Sprungfolge: 1, 2, 0“). Gilt das Snippet in Formeln, setzt KaTeX die Formel darunter.
- „Ausprobieren“: Ein echtes Latexfeld („Probierfeld“) mit dem Einsetzkern, den auch der Formelblock benutzt, und der Knopf „Einsetzen“. Der Trenner öffnet hier keine Liste: Eingesetzt wird das Snippet, das man gerade bearbeitet, nicht das gespeicherte. Nach dem Einsetzen springt Tab zur nächsten Stelle, Umschalt und Tab zurück, Esc beendet die Folge. Stellen mit gleicher Nummer wirken als Spiegelung: Was man in die erste tippt, steht in allen. Der Knopf ist gesperrt, solange der Rumpf einen Fehler hat.
Fällt die Abfrage aus, bleibt der letzte Stand stehen, und eine Marke sagt, dass Denotato nicht antwortet (Grundsatz 33).
Was man tun kann
- Suchen. Das Suchfeld filtert im Browser nach Name, Wort und Rumpf.
- Ein Snippet ansehen. Zeile wählen; die Werkbank zeigt Formular, Einsatzbild und Probierfeld.
- Ein eigenes Snippet anlegen (Knopf „Neues Snippet“): Name (Buchstaben, Ziffern,
_und-, höchstens 24 Zeichen), Wort (höchstens 60 Zeichen), Geltung und Rumpf (höchstens 2000 Zeichen). Bis zu 300 je Konto. Der Name kommt im eigenen Bestand nur einmal vor; ein Name der Grundmenge ist für ein eigenes Snippet frei. - Ein eigenes Snippet ändern. Zeile wählen, ändern, „Speichern“.
- Ein eigenes Snippet löschen. „Löschen“ mit der Rückfrage „ja, endgültig“.
- Fehler an ihrer Stelle sehen. Die Prüfung läuft bei jedem Tastendruck; „Speichern“ bleibt gesperrt, solange Name, Wort oder Rumpf einen Fehler haben. Weist der Server trotzdem etwas ab, steht seine Meldung an derselben Stelle: ein Rumpffehler in der Fehlerliste, ein doppelter Name unter dem Namen.
- Die Grundmenge pflegen — nur mit der Fähigkeit
latex.befehle(Paketmitarbeiter): Dann stehen der Knopf „Neues Snippet im Grundstock“ und dieselben Knöpfe „Speichern“ und „Löschen“ auch an den Grundsnippets. Wer sie nicht hat, sieht den Grundstock, kann ihn ausprobieren und nicht ändern; der Server prüft es noch einmal. - Zu den Befehlen und Texten. Die Verweise „Befehle“ und „Texte“ in der Kopfzeile führen nach /latex/befehle und an den Anfang /latex.
Woher die Daten kommen
personal.latex_snippets— die Grundmenge, für alle Konten gleich.personal.latex_eigene_snippets— die eigenen Snippets je Konto, mit Zeilensicherheit (RLS). Die Wege laufen über den verschlüsselten Weg (registerEncryptedRoute).- Endpunkte (alle POST):
APIPaths.LATEX_SNIPPETS(Liste mit Grundmenge, eigenen Snippets,darfPflegenund dem Trenner des Kontos),LATEX_SNIPPETS_EIGENE_SPEICHERN,LATEX_SNIPPETS_EIGENE_LOESCHEN,LATEX_SNIPPETS_SPEICHERNundLATEX_SNIPPETS_LOESCHEN(die beiden letzten nur mitlatex.befehle). Die Wege liegen unter/api/latex/snippets. - Eine abgewiesene Angabe antwortet mit der Kennung
latex_snippet_invalid_error; ihredetailsnennen je Zeile eine Stelle in der FormZeichen 4 bis 9 (nicht_geschlossen): Satz. Der Leser dafür steht allein insnippetanfragen.ts. - Der Trenner ist die Einstellung
latex.snippetTrenner; der Server liefert ihren wirksamen Wert mit der Liste, der Schirm rät ihn nicht. - Der Schirm hält den Stand unter
latex.snippets(useStand).
Was fehlt
- Das Auslösen im Vollbild-Editor. Im Formelblock und in der Karte löst der Trenner aus (LX08, latex.md); der Editor (LX11) fehlt noch.
- Eine Rückfrage vor dem Wechsel. Wer ungespeicherte Änderungen hat und eine andere Zeile wählt, verliert sie ohne Warnung.
- Eine Vorschau mit echter Auswahl.
${TM_SELECTED_TEXT}setzt das Probierfeld nur mit dem Text, den man dort markiert hat; eine eigene Auswahl im Einsatzbild gibt es nicht. - Keine Ordnung der Grundmenge im Schirm. Die Reihenfolge ist eine Zahl am Eintrag; der Schirm ändert sie nicht und zeigt sie nicht.
- Kein Kopieren eines Grundsnippets ins Eigene. Wer ein Grundsnippet abwandeln will, legt ein neues an und tippt den Rumpf ab.
- Keine Einfuhr und Ausfuhr. Snippets aus VS Code (
.code-snippets) lassen sich nicht einlesen oder ausgeben. - Kein MCP-Werkzeug für die Grundmenge. Die Pflege der Grundmenge hat wie bei den Befehlen keines (N295).
- Keine Grenzen je Abo-Stufe. Es gibt nur die feste Grenze von 300 eigenen Snippets; sie kommt als beschrifteter Platzhalter nach dem Muster von N224 und N421, sobald der Bereich etwas zählt.
- Der Trenner ist am Schirm nicht änderbar. Er ist die Einstellung
latex.snippetTrenner; der Schirm zeigt ihn nur. - Eine Verschlüsselung im Ruhezustand fehlt. Die eigenen Snippets sind auf dem Weg verschlüsselt und je Konto abgeschottet, liegen aber im Klartext in der Datenbank (N271).
- Kein Leertext bei leerer Suche. Findet die Suche nichts, bleibt die Liste leer, ohne ein Wort dazu.
Die Meldung „Gespeichert“ geht beim ersten Speichern verloren.Hinfällig seit dem 08.10.2026: Bestätigungen erscheinen nirgends mehr (2026-10-08-keine-erfolgsmeldungen). Dass ein neues Snippet da ist, zeigt die Liste, beim ersten wie bei jedem weiteren Speichern.- Kontrast der Nebentexte und der Chip-Ziffer. Die Nebentexte messen 3,6 bis 4,1 : 1; die kleine Ziffer in den Platzhalter-Chips ist im dunklen Schema kaum zu lesen.