diff options
author | martin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2009-01-24 12:49:46 +0000 |
---|---|---|
committer | martin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2009-01-24 12:49:46 +0000 |
commit | 6f4cd1a1747ddff65eee865794f1f1213843eaa2 (patch) | |
tree | 61f6549ce7fc5b86e0d4f476932168bf4689d390 /yaml | |
parent | 3d4879eb69d47aa4c4e0814fc7825cbfc1d794ec (diff) | |
download | neo-layout-6f4cd1a1747ddff65eee865794f1f1213843eaa2.tar.gz neo-layout-6f4cd1a1747ddff65eee865794f1f1213843eaa2.tar.bz2 neo-layout-6f4cd1a1747ddff65eee865794f1f1213843eaa2.zip |
Skript und Dokumentation neu
git-svn-id: https://svn.neo-layout.org@1530 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'yaml')
-rw-r--r-- | yaml/neo20.parse.py | 185 | ||||
-rw-r--r-- | yaml/neo20_global.py | 3 | ||||
-rw-r--r-- | yaml/readme.txt | 51 | ||||
-rw-r--r-- | yaml/ref.parse.py | 80 | ||||
-rw-r--r-- | yaml/ref.skel | 267 |
5 files changed, 227 insertions, 359 deletions
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 +#<http://www.gnu.org/licenses/>. +''' +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 <http://www.gnu.org/licenses/>.
-
-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 <dead_stroke> + <space> 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 |