Skript und Dokumentation neu

This commit is contained in:
martin_r 2009-01-24 12:49:46 +00:00
parent 623d6d83e3
commit 0d75220574
5 changed files with 227 additions and 359 deletions

185
yaml/neo20.parse.py Normal file
View File

@ -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)

3
yaml/neo20_global.py Normal file
View File

@ -0,0 +1,3 @@
#define box drawing
b = None, None, None, '\u2510', None, '\u2500', '\u250C', '\u252C', None, \
'\u2518', '\u2502', '\u2524', '\u2514', '\u2534', '\u251C', '\u253C'

View File

@ -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.

View File

@ -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)

View File

@ -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 NEOTastatur 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 NEOTastatur 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)