From 6f4cd1a1747ddff65eee865794f1f1213843eaa2 Mon Sep 17 00:00:00 2001 From: martin_r Date: Sat, 24 Jan 2009 12:49:46 +0000 Subject: Skript und Dokumentation neu git-svn-id: https://svn.neo-layout.org@1530 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- yaml/neo20.parse.py | 185 +++++++++++++++++++++++++++++++++++ yaml/neo20_global.py | 3 + yaml/readme.txt | 51 +++++++--- yaml/ref.parse.py | 80 --------------- yaml/ref.skel | 267 --------------------------------------------------- 5 files changed, 227 insertions(+), 359 deletions(-) create mode 100644 yaml/neo20.parse.py create mode 100644 yaml/neo20_global.py delete mode 100644 yaml/ref.parse.py delete mode 100644 yaml/ref.skel (limited to 'yaml') diff --git a/yaml/neo20.parse.py b/yaml/neo20.parse.py new file mode 100644 index 0000000..8b6d70a --- /dev/null +++ b/yaml/neo20.parse.py @@ -0,0 +1,185 @@ +#YAML Parser for the Neo reference +#Copyright 2009 Martin Roppelt (m.p.roppelt ἢτ web in Germany) +# +#This file is part of German NEO-Layout Version 2. +#German Neo Layout Version 2 is free software: you can redistribute it and/or +#modify it under the terms of the GNU General Public License as published by the +#Free Software Foundation, either version 3 of the License, or (at your option) +#any later version. You should have received a copy of the GNU General Public +#License along with German NEO-Layout Version 2. If not, see +#. +''' +Converts the reference into both human and machine readable and editable files +for automated creating of keyboard drivers, pictures and references. +''' +#Needs at least Phyton 3.0 and PyYAML 3.08 (pyyaml.org) to run. +# +#Call with -h|--help to print command line options. +# +#Variables: +#b: box drawing characters as tuple, +#index bits: (0) left (1) down (2) right (3) up +##c: control file #for reference +#f: file iterator +#i: index-sorted file +#m: model file +#min: miniatures +#n: name/number iterator +#o: command line options: +#o.a: auto-completion of file names as boolean +#o.d: destination file name +#o.i: index-sorted file name +#o.m: model file name +#o.r: paths relative to ./ otherwise to ../A-REFERENZ-A/ as boolean +#o.s: source file name +#o.t: destination file types (i/m/p/v) +#o.v: view file name +#p: pattern file +#pm: pre-model +#r: compiled regular expression +#s: source file as string +#v: view file, contains: +#pv: pre-view +# string literals +# replacement commands +# patterns + +from neo20_global import b +from optparse import OptionParser, make_option +from sys import stdout +from unicodedata import category +import os +import re +import yaml + +def parse(s, w = 5): + ''' + Returns a representation of a key field s with the standard with w. + ''' + #Variables: + #i: line iterator + #j: level iterator + #l: key line iterator + #y: key level list + #m: model + #k: key iterator + #s: key field as string + #w: standard key with + #v: view + #q: key iterator + m = []; v = []; y = []; i = 0 + for l in [l[:s.index(b[3])] for l in s.splitlines()[1:]]: + if l[0] in (b[12], b[14]): + m.append([]); v.append([]) + for j, l in enumerate(y[::-1]): + q = 0 + for k in l[1:].split(b[10]): + if j == 0: + m[i].append([]); v[i].append([]) + if len(k) == w: + if w == 7: + m[i][q].extend([k[0], k[2:5], k[6:7]]) + elif w == 5: + m[i][q].extend(list(k[0:5:2])) + elif w == 1: + m[i][q] = k + else: + v[i][q] = k + q += 1 + i += 1; y = [] + else: + y.append(l) + return m, v + +def compare(m, min): + ''' + Compares the overall and miniature key field and returns their completed + views. + ''' + v = [m[1] for m in m] + return v + +#command line options: +o = OptionParser(usage = 'example: %prog -ti -astest', + description = 'YAML Parser for the Neo reference', + option_list = [ +make_option('-a', action = 'store_true', default = False, help = 'source file \ +name is inserted into ‘neo20-’ and ‘.txt’'), +make_option('-r', action = 'store_false', default = True, help = 'source and \ +destination files are not relative to ../A-REFERENZ-A/'), +make_option('-t', metavar = 'mxiv', default = 'm', help = 'destination file \ +types (default = %default)'), +make_option('-s', metavar = 'source file', default = 'neo20.txt', + help = 'default = %default'), +make_option('-d', metavar = 'destination file name', help = 'default = *.*'), +make_option('-m', metavar = 'model file', help = 'default = *.model'), +make_option('-x', metavar = 'hex model file', help = 'default = *.x'), +make_option('-i', metavar = 'index-sorted file', help = 'default = *.index'), +make_option('-v', metavar = 'view file', help = 'default = *.view')] +).parse_args()[0] + +#evaluate options: +o.t = o.t.lower() +if o.d == None: + o.d = o.s.rsplit('.txt')[0] +if o.a: + o.s, o.d = 'neo20-' + o.s + '.txt', 'neo20-' + o.d +if o.r: + o.s, o.d = '../A-REFERENZ-A/' + o.s, '../A-REFERENZ-A/' + o.d +for f in '.model', '.x', '.index', '.view': + if f[1] in o.t.lower() and eval('o.' + f[1]) == None: + exec('o.' + f[1] + ' = o.d + f') + +#input: +s = open(o.s, encoding = 'utf8').read() + +#processing: +r = re.compile(b[6] + '.*?' + b[9] + '.*?\n(?=\n)', re.DOTALL | re.MULTILINE) +p, pm = r.split(s), r.findall(s) #Split into key fields and the rest +for n in (0, 16): + p.insert(n, p.pop(n) + pm.pop(n) + p.pop(n)) #Put the legends back into the + #pattern list + +#parse key fields +m = [parse(pm[9]), parse(pm[20], 7)] +min = [] +for n in range(6): + min.append([parse(pm[10 + n], 1), parse(pm[21+ n], 7)]) +v = compare(m, min); m = [m[0] for m in m] + +#complete view ## +v = [[v], []] + +v.append(p) + +#create hex model +if 'x' in o.t.lower(): + x = [] + for f, n in enumerate(m): + x.append(); ## + +#create index +if 'i' in o.t.lower(): + i = [] + for n in m: + for n in n: + i.extend(n) +#output: +for f in 'mxiv': + if not stdout.isatty(): + file = stdout + else: + file = open(eval('o.' + f), 'w', encoding = 'utf8') + if f in o.t: + if f == 'v': + yaml.dump_all(v[0:-1], file, allow_unicode = True, + explicit_start = True, + explicit_end = True) + yaml.dump(v.pop(), file, allow_unicode = True, + explicit_start = True, + explicit_end = True, + default_style = '|') + else: + yaml.dump(eval(f), file, allow_unicode = True, + explicit_start = True, + explicit_end = True) diff --git a/yaml/neo20_global.py b/yaml/neo20_global.py new file mode 100644 index 0000000..cf372c1 --- /dev/null +++ b/yaml/neo20_global.py @@ -0,0 +1,3 @@ +#define box drawing +b = None, None, None, '\u2510', None, '\u2500', '\u250C', '\u252C', None, \ +'\u2518', '\u2502', '\u2524', '\u2514', '\u2534', '\u251C', '\u253C' diff --git a/yaml/readme.txt b/yaml/readme.txt index cadff11..22ad75c 100644 --- a/yaml/readme.txt +++ b/yaml/readme.txt @@ -1,12 +1,39 @@ -Aus der neo20.yaml sollen einmal automatisch erstellt werden: - -- XkbMap -- XModMap -> Konsolen-Map, Tastenaufkleber -- KbdNeo -- AHK, Bildschirmtastatur -- Mac-Treiber, hier brauche ich die Unterstützung von Mac-Entwicklern -- Referenz -- gerne auch Aufsteller, Tabellen, Druckvorlagen, … -- KTouch-Lektionen? - -Für die Yaml/Python-Verarbeitung nutze ich PyYAML (pyyaml.org). +Neo-Projekt: Maschinenlesbare Referenz + +Martin Roppelt (m.p.roppelt ät web in Deutschland) + +Ressourcen: +- https://svn.neo-layout.org/grafik/xml-vorschlag/, Revision 200 +- http://www.eigenheimstrasse.de/~ben/layoutgen/layoutgen/ +- svn://svn.tuxfamily.org/svnroot/dvorak/svn/pilotes/trunk/configGenerator/ +- http://pyyaml.org/ + +E-Mails: + 07/07 [neo_layout] Autohotkey und ein paar Ideen + 07/07 [neo_layout] neo.xml +11-12/08 [neo] Referenz als XML für automatische Layout-Generierung + 01/09 Maschinenlesbare Referenz + +Funktionsweise: +Menschenlesbare Referenz, Unicode-Hex-Ansicht +<=> Maschinenlesbare Referenz +<=> Treiber, Grafiken: + +- XkbMap +- XModMap -> Konsolen-Map, Tastenaufkleber +- KbdNeo +- AHK, Bildschirmtastatur/SVGs +- Mac-Treiber +- Aufsteller, Tabellen +- KTouch-Lektion + +Um einen Treiber usw. zu erzeugen, wird ein View benötigt, der die zur +Darstellung zusätzlich benötigten Daten enthält. Dieser kann auch aus den +bereits bestehenden Treibern erstellt werden. Wenn man also an der Neo-Belegung +etwas ändert, kann man so alle Treiber synchronisieren. So lassen sich auch +rasch aus Belegungen Neo-3-Treiber und Forks erstellen. + +Projektstatus: +Zur Zeit entwickele ich einen Parser für die Referenz. Danach möchte ich ein +Skript für die Erstellung der neo20.txt aus der maschinenlesbaren Referenz +schreiben. diff --git a/yaml/ref.parse.py b/yaml/ref.parse.py deleted file mode 100644 index 8a3d2e8..0000000 --- a/yaml/ref.parse.py +++ /dev/null @@ -1,80 +0,0 @@ -# Parser für die NEO-Referenz, erzeugt eine YAML-Datei. -# Copyright 2008 Martin Roppelt -# E-Mail: m.p.roppelt@web.de - -# This file is part of the German NEO-Layout Version 2. -# German NEO-Layout Version 2 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. -# You should have received a copy of the GNU General Public License along with German NEO-Layout Version 2. If not, see . - -import io, yaml - -a = [[0, 2, 6], [1, 5, 7]] - -try: - # s: Quelldatei (source) öffnen: - s = io.open('../A-REFERENZ-A/neo20.txt', 'r', 2, 'utf8').readlines() - # g: Wörterbuch-Datei (Gerüst) öffnen: - g = yaml.load(open('ref.skel')) - - # Tastaturfelder parsen: - # Erzeuge Liste für die Tastaturfelder: - # d: Liste der kombinierten Tastaturfelder („Alle Ebenen“) - # m: Liste der Mini-Tastaturfelder - d = m = [[], []] - # Durchlaufe Tastaturfelder („Alle Ebenen“): - # f: Iterator Tastaturfeld (field) - # q: Feld der Such-Schlüssel (query) - q = ['Ha', 'Za'] - for f in range(2): - # Bestimme Zeile l (line): Position des Schlüssels q[f] in der Quelldatei (Beginn des Tastaturfeldes) - l = s.index(g[q[f]]) - # Durchlaufe die Tastaturreihen: - # r: Iterator Tastaturreihe (row) - for r in range(6): - # Erzeuge Liste für Tastaturreihe: - d[f].append([]) - # Erzeuge Liste für die zeilenweise Beschriftung der Tasten der Tastaturreihe: - z = [[], []] - # i: Iterator Tastenzeile (iterator) - for i in range(2): - z[i] = s[l + (r + 1) * 3 - 1 -i].split(u'│')[1:-1] - # Wenn die Zeilen einer Tastenreihe nicht gleich viele Tasten enthalten, gebe eine Fehlermeldung aus und beende das Skript: - if len(z[0]) != len(z[1]): - print u'Die Zeilen der %s. Reihe im Feld »%s« enthalten unterschiedlich viele Tasten!' % (1 + r, f) - quit() - # Durchlaufe die Zeilen der Tastaturreihe: - # k: Iterator Tasten (key) - for k in range(len(z[0])): - # Erzeuge Wörterbuch für Taste: - d[f][r].append({}) - # Schreibe Vollbreite der Taste: - d[f][r][k]['v'] = len(z[0][k]) - # Wenn die Breite der Taste 5 bzw 7 ist (Normale Taste), - # schreibe die Zeichen der Ebenen der Taste: - # schreibe die Beschriftung der Taste: - if len(z[0][k]) == 5 + 2 * f: - # i: Iterator Tastenzeile - for i in range(2): - # j: Iterator Ebene - for j in range(3): - # Erzeuge Wörterbuch für Ebene der Taste: - d[f][r][k][1 + i * 3 + j] = {} - if f: - if z[i][k][0] == ' ' and z[i][k][-1] == ' ': - d[f][r][k][1 + i * 3 + j]['i'] = z[i][k][j * 2 + 1] - else: - d[f][r][k][1 + i * 3 + j]['i'] = z[i][k][a[0][j]: a[1][j]] - else: - d[f][r][k][1 + i * 3 + j]['i'] = z[i][k][j * 2] - # Kopiere das Zeichen der 1. Ebene in die Beschriftung der Taste: - # d[f][r][k]['i'] = d[f][r][k][1]['i'] - else: - d[f][r][k]['i'] = z[1][k] + z[0][k] - - yaml.dump(d, open('ref.parse', 'w')) -except IOError: - print "I/O-Fehler" -except yaml.YAMLError, exc: - if hasattr(exc, 'problem_mark'): - mark = exc.problem_mark - print "YAML-Parserfehler: (%s:%s)" % (mark.line+1, mark.column+1) diff --git a/yaml/ref.skel b/yaml/ref.skel deleted file mode 100644 index 746c6d0..0000000 --- a/yaml/ref.skel +++ /dev/null @@ -1,267 +0,0 @@ -Ia: | - ------------------------------------------------------------------------------- - ACHTUNG: - Damit alles ordentlich dargestellt wird, muss man für die Darstellung z. B. im - Texteditor eine dicktengleiche Schrift einstellen! - - Im Browser (Firefox) muss man unter Ansicht, Zeichenkodierung auf Unicode - (UTF-8) stellen. - - Unter Windows ist in der Grundinstallation leider keine dicktengleiche Schrift - installiert, die befriedigend viele Unicodezeichen beinhaltet. - Abhilfe schafft z. B. DejaVu Sans Mono (ist z. B. bei OpenOffice dabei): - http://dejavu.sourceforge.net/ - ------------------------------------------------------------------------------- - - == Haupttastatur == - === Legende – Haupttastatur === - ┌─────┐ 1 … 1. Ebene (kein Mod) │ 4 … 4. Ebene (Mod4) - │2 4 6│ 2 … 2. Ebene (Umschalt) │ 5 … 5. Ebene (Mod3+Umschalt) - │1 3 5│ 3 … 3. Ebene (Mod3) │ 6 … 6. Ebene (Mod3+Mod4) - └─────┘ - • Ebene 1: Kleinbuchstaben (kein Mod) - • Ebene 2: Großbuchstaben (Umschalt) - • Ebene 3: Sonderzeichen (Mod3) - • Ebene 4: Navigation und Ziffernblock (Mod4) - • Ebene 5: Griechische Kleinbuchstaben (Mod3+Umschalt) - • Ebene 6: Griechische Großbuchstaben (Mod3+Mod4) - - • Kombo/Compose: Zusammensetzen von Zeichen (Mod3+Tab) - Beispiel: - »Compose« »Compose loslassen« »o« »c« = © - • Feststellen/Capslock: Dauergroßschreiben (Umschalt+Umschalt) - Zum Lösen der Feststellung nochmals gleiche Kombination - • Feststellen der Ebene 4: (Mod4+Mod4) oder (Umschalt+Mod3+Tab) - Zum Lösen der Feststellung nochmals gleiche Kombination - - HINWEIS: Unter Linux ist es momentan noch nicht möglich die Feststellung - zu lösen, indem man beide Mods drückt. Man muss dort nur einen drücken! - - === Maustastatursteuerung === - Die Maustastatursteuerung schaltet man über Shift+Mod4+T1 ein und ebenso wieder aus. - Mit dieser kann man den Mauszeiger über die Tastatur steuern. Dies kann sinnvoll sein, falls - die Maus oder das Touchpad streikt oder keine solches Medium vorhanden ist. - Am besten geeignet ist dazu die Ebene 4 des Keypads (z.B. mit Mod4_Lock). Verzichtet man auf - Markierungen ist auch Ebene 1 des Keypads geeignet. - Des Weiteren kann man die Zahlen auf Ebene 4 des Haupttastaturfelds benutzen, jedoch ist die - Bedienung dort weniger komfortabel. - - === Symbole === - ⇞⇟ … Bild auf/Bild ab - ⇱⇲ … Pos1/Ende - ⌫ ⌦ … Backspace/Entf - ⌧ … Esc - ⎀ … Einf - ⇠⇡⇢⇣ … Links/Hoch/Rechts/Runter - ♫ … Steht als Symbol für die Kombotaste (Compose) - ╌ … Weicher Trennstrich (U+00AD SOFT HYPHEN) - ␣ … Leerzeichen (SPACE) - ⍽ … Geschütztes Leerzeichen (U+00A0 NO-BREAK SPACE) - ¦ … Schmales, geschütztes Leerzeichen (U+202F NARROW NO-BREAK SPACE) - ↶ … undo-Funktion - Beg … Klick mit der Tastaturmaus - - === Akzenttasten === - Zu den Akzenten siehe auch - • http://unicode.e-workers.de/ - • http://de.wikipedia.org/wiki/Diakritisches_Zeichen - • http://de.wikipedia.org/wiki/Liste_lateinisch-basierter_Alphabete - -Ta: | - T1 („Tote Taste 1“: Taste links neben der 1) -Tb: | - T2 („Tote Taste 2“: zwei Tasten rechts neben der 0) -Tc: | - T3 („Tote Taste 3“: Taste rechts neben dem scharfen S (ß)) -Ib: | - - ACHTUNG: „Tote Tasten“ (Tasten zum Erzeugen toter Zeichen – also Zeichen die nicht - gleich erscheinen, sondern nur in Kombination mit einem weiteren Buchstaben) werden - folgendermaßen bedient (Beispiel): - 1. Tote Tilde »~« eingeben. - 2. Danach »n«. - 3. Es erscheint das »ñ«. - - TIPP: Mit den toten Tasten Zirkumflex und Querstrich kann man hoch(ˆ)- und tiefgestellte(/) Ziffern erzeugen. - - === Taste mit Bindestrichen, Gedankenstrich usw. === - Zu den Gedankenstrichen usw. siehe: - • http://www.matthias-kammerer.de/SonsTypo3.htm - • http://de.wikipedia.org/wiki/Weicher_Trennstrich -S: | - Taste rechts neben der 0 -Ic: | - Außerdem gibt es noch - • den (echten) Hyphen (U+2010 HYPHEN), der über + erzugt wird - • das (echte) Minuszeichen (U+2212 MINUS SIGN) auf dem Keypad - • den (deutschen) Gedankenstrich (U+2013 EN DASH) - • den Bindestrich/Minusersatz (U+002D HYPHEN-MINUS) - -A: | - === Anführungszeichen === -Id: | - Siehe auch http://de.wikipedia.org/wiki/Anf%C3%BChrungszeichen -Ie: | - === Dezimaltrennzeichen === - Das Dezimaltrennzeichen ist auf englischen und südamerikanischen Systemen ein Punkt ».«. - Auf deutschen, französischen, spanischen, schweizerischen und anderen ein Komma »,«. - Siehe auch http://de.wikipedia.org/wiki/Dezimaltrennzeichen - - === Ziffern === - Die Ziffern auf der Ersten Ebene sind die »normalen« Zahlen (also nicht die KP_-Variante), - wogegen für den Ziffernblock auf der vierten Ebene stets die KP_‐Varianten verwendet werden - sollten, um die Vielseitigkeit und Funktionsfähigkeit der NEO‐Tastatur zu gewährleisten. - - === Alle Ebenen – Haupttastatur === -Ha: | - ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────┐ -Hb: | - ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──────┤ -Hc: | - ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ │ -Hd: | - ├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┴─────┤ -He: | - ├──────┼─────┴┬────┴─┬───┴─────┴─────┴─────┴─────┴─────┴────┬┴─────┼─────┴┬──────┬──────┤ -Hf: | - └──────┴──────┴──────┴──────────────────────────────────────┴──────┴──────┴──────┴──────┘ -M1: | - === Erste Ebene – Miniatur === -Ma: | - ┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐ -Mb: | - ├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤ -Mc: | - ├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │ -Md: | - ├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤ -Me: | - ├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤ -Mf: | - └───┴──┴──┴───────────┴──┴──┴──┴───┘ -M2: | - === Zweite Ebene – Miniatur === -M3: | - === Dritte Ebene – Miniatur === -M4: | - === Vierte Ebene – Miniatur === -M5: | - === Fünfte Ebene – Miniatur === -M6: | - === Sechste Ebene – Miniatur === - -If: | - == Ziffernblock == - Um die Vielseitigkeit und Funktionsfähigkeit der NEO‐Tastatur zu gewährleisten, - sollten für alle Elemente auf dem Keypad wenn möglich die KP_‐Variante verwendet werden! - - === Legende – Ziffernblock === - ┌───────┐ 1 … 1. Ebene (kein Mod) 4 … 4. Ebene (Mod4) - │ 2 4 6 │ 2 … 2. Ebene (Umschalt) 5 … 5. Ebene (Mod3+Umschalt) - │ 1 3 5 │ 3 … 3. Ebene (Mod3) 6 … 6. Ebene (Mod3+Mod4) - └───────┘ - === Rechenzeichen === -Z: | - === Alle Ebenen – Ziffernblock === -Za: | - ┌───────┬───────┬───────┬───────┐ -Zb: | - ├───────┼───────┼───────┼───────┤ -Zc: | - ├───────┼───────┼───────┤ │ -Zd: | - ├───────┴───────┼───────┤ │ -Ze: | - └───────────────┴───────┴───────┘ -N1: | - === Erste Ebene – Miniatur === -Na: | - ┌───┬───┬───┬───┐ -Nb: | - ├───┼───┼───┼───┤ -Nc: | - ├───┼───┼───┤ │ -Nd: | - ├───┴───┼───┤ │ -Ne: | - └───────┴───┴───┘ -N2: | - === Zweite Ebene – Miniatur === -N3: | - === Dritte Ebene – Miniatur === -25: | - === Vierte Ebene – Miniatur === -26: | - === Fünfte Ebene – Miniatur === -27: | - === Sechste Ebene – Miniatur === -Ig: | - == Tipp == - Trägt man unter Linux/Mac/BSD folgende Zeilen in die ~/.bashrc, ~/.zshrc oder - vergleichbares ein, bekommt man anschließend mittels Eingabe von »neo« oder - »num« die aktuelle Belegung in der Konsole angezeigt: - alias num='grep -m 1 -B 15 "┴───────┘" PFAD_ZUR_DATEI/neo20.txt' - alias neo='grep -m 1 -B 15 "┴──────┘" PFAD_ZUR_DATEI/neo20.txt' - - Dazu muss »PFAD_ZUR_DATEI« durch den Pfad zu dieser Datei ersetzt werden. - - Im Verzeichnis linux/bin sind umfangreichere Skripte mit größerer Funktionalität. - - == Zeichenerläuterungen == - Ξ … Xi, griechischer Majuskel (U039E) - ≙ … entspricht (U2259) - Λ … Lambda, griechischer Majuskel (U039B) - ℂ … Menge der komplexen Zahlen (U2102) - Ω … Omega, griechischer Majuskel (U03A9) - √ … Wurzel aus (U221A) - Ψ … Psi, griechischer Majuskel (U03A8) - Γ … Gamma, griechischer Majuskel (U0393) - Φ … Phi, griechischer Majuskel (U03A6) - ℚ … Menge der rationalen Zahlen (U211A) - ∘ … Verknüpfungsoperator (U2218) - ∮ … Integral über eine geschlossene Kurve (U222E) - ∫ … Integral (U222B) - ∀ … Allquantor ; für alle (U2200) - ∃ … Existenzquantor ; es gibt (U2203) - ∈ … Element von (U2208) - Σ … Sigma, griechischer Majuskel (U03A3) - ℕ … Menge der natürlichen Zahlen (U2115) - ℝ … Menge der reellen Zahlen (U211D) - ∂ … partielle Ableitung (U2202) - Δ … Delta, griechischer Majuskel (U0394) - ∇ … Nablaoperator (Gradient, Divergenz, Rotation) (U2207) - ∝ … proportional zu (U221D) - ℑ … Imaginärteil einer komplexen Zahl (U2111) - ℜ … Realteil einer komplexen Zahl (U211C) - ℵ … Kardinalzahlen, Aleph-Symbol (U2135) - Π … Pi, griechischer Majuskel (U03A0) - ℤ … Menge der ganzen Zahlen (U2124) - ⇒ … Implikation ; daraus folgt ; hinreichend für (U21D2) - ⇔ … Äquivalenzzeichen (U21D4) - ⇐ … notwendig für ; nur dann, wenn (U21D0) - Θ … Theta, griechischer Majuskel (U0398) - ≡ … identisch (U2261) - □ … Beweisende (qed) (U25A1) - ⊙ … direkte Summe ; Vektor aus der Ebene zeigend (U2299) - ⊗ … Tensorprodukt ; Vektor in die Ebene zeigend (U2297) - ∞ … unendlich (U221E) - ∋ … enthält das Element (U220B) - ª … weiblicher Ordinalindikator (2ª) (U00AA) - º … männlicher Ordinalindikator (1º) (U00BA) - - == Hinweise zu Doppelbelegungen in Unicode == - Griechische Minuskel und Majuskel besitzten in der Regel eine weitere Bedeutung, z.B. - • Δ für Differenz oder Fehler - • Θ für homöopathische Urtinktur - • Γ für Gammafunktion - - Einige finden sich darum an mehreren Stellen im Unicode, um (eventuelle) Unterschiede - deutliche machen zu können. Zur Platzersparnis haben wir stets eines (das einfachste - und allgemeinste) Zeichen aufgenommen: - • Ω (U03A9) ; Einheit des Widerstandes Ohm (U2126) - • Σ (U03A3) ; Summenzeichen (U2211) - • Δ (U0394) ; Laplaceoperator (U2206) ; Dreieck, symmetrische Differenz (U25B3) - • ∇ (U2207) ; Dreieck (U25BD) - • Π (U03A0) ; Produktzeichen ∏ (U220F) - • µ (U03BC) ; SI-Vorsilbe micro (U00B5) - \ No newline at end of file -- cgit v1.2.3