summaryrefslogtreecommitdiffstats
path: root/yaml
diff options
context:
space:
mode:
authormartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-01-24 12:49:46 +0000
committermartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-01-24 12:49:46 +0000
commit6f4cd1a1747ddff65eee865794f1f1213843eaa2 (patch)
tree61f6549ce7fc5b86e0d4f476932168bf4689d390 /yaml
parent3d4879eb69d47aa4c4e0814fc7825cbfc1d794ec (diff)
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.py185
-rw-r--r--yaml/neo20_global.py3
-rw-r--r--yaml/readme.txt41
-rw-r--r--yaml/ref.parse.py80
-rw-r--r--yaml/ref.skel267
5 files changed, 222 insertions, 354 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:
+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
-- Mac-Treiber, hier brauche ich die Unterstützung von Mac-Entwicklern
-- Referenz
-- gerne auch Aufsteller, Tabellen, Druckvorlagen, …
-- KTouch-Lektionen?
+- 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.
-Für die Yaml/Python-Verarbeitung nutze ich PyYAML (pyyaml.org).
+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