März 2016

Auf die Gipfel der Ravensberge
Dezember war’s, als Mathies, Anne und ich zu fortgeschrittener Stunde den Wald betraten. Irgendwo vor uns lagen die Ravensberge und der Teufelssee, aber auch die Nacht.

Holzfeller?

Bad Wilsnack, 25. März 2015

Einfache Ruby-Annotationen mit HTML und CSS

Ruby-Annotationen sind klein geschriebene Anmerkungen über den Wörtern in einer Zeile (bei primär horizontaler oder neben den Wörtern bei primär vertikaler Schreibrichtung). Ruby findet man vor allem in Ostasien, zum Beispiel als Erläuterung zur Aussprache, da die Aussprache mit chinesischen Schriftzeichen geschriebener Texte anders als in den mitteleuropäischen Alphabetschriften nicht ersichtlich ist.

XHTML und HTML ermöglichen recht komplexe Ruby-Definitionen (Ruby-Spezifikation). Ein einfaches Beispiel, bei dem man einem Text-Schnipsel eine Ruby-Annotation zuordnet, kann so hinterlegt werden:

<ruby><rb>Text</rb><rt>Ruby</rt></ruby>

In HTML kann man die Auszeichnung mit der gleichen Bedeutung noch angenehm vereinfachen:

<ruby>Text<rt>Ruby</ruby>

Eine syntaktisch andere Form von Annotationen unter HTML, die zunächst mit Ruby nichts zu tun hat und in den meisten Browsern als Tipp eingeblendet wird, wenn man mit dem Mauszeiger auf dem Text ruht, bietet das globale title-Attribut:

<span title='Ruby'>Text</span>

Mit geeignetem CSS-Code kann man allerdings auch diese Form in Ruby umwandeln (CSS-Ruby-Modul):

<style type='text/css'>
span[title] {
    display: ruby;
    unicode-bidi: isolate;
}
span[title]::after {
    content: attr(title);
    display: ruby-text;
    font-size: 50%;
    line-height: 1;
    unicode-bidi: isolate;
    white-space: nowrap;
}
</style>

Ich habe eine Testseite angelegt: oben HTML-Ruby, unten CSS-Ruby. Firefox 45 zeigt beides gleich und wie gewünscht an, Safari 9.1 schwächelt noch bei der CSS-Variante.

Hintergrund meiner Beschäftigung damit ist, dass ich auch die Definition von Ruby-Annotationen in der einfachen Auszeichnungssprache Aneamal ermöglichen wollte. In Aneamal gibt es aber bereits eine Möglichkeit, mit geschweiften Klammern Hinweise anzufügen, die bei der Übersetzung nach HTML mit dem title-Attribut realisiert werden.

Es freut mich, für Ruby keine neue Sondersyntax einführen zu müssen, sondern auf die bestehende zurückgreifen zu können, weil zwischen der Präsentation als maussensitiver Tipp oder Ruby im Nachhinein per CSS entschieden werden kann. So schreibt sich das obige Beispiel in Aneamal:

Text{Ruby}

Kulinarische Köstlichkeit

In Perleberg firmiert eine Prignitzer Spezialität der kalten Jahreszeit auch unter dem Namen „Suren Hansen“. Worum handelt es sich dabei?



Kleiner Tipp: Die richtige Lösung beginnt mit K.

Holzwolle?

Bad Wilsnack, 25. März 2015

Eine Formel als imperatives Programm

In einem demnächst veröffentlichten Artikel zu einer Reihendarstellung der Kreiszahl π schreibe ich, die Formel

$$\pi=2\sum_{n=0}^\infty\prod_{k=1}^n\frac{k}{2k+1}$$

sei so quasi algorithmisch. Man kann sie leicht in ein imperatives Computerprogramm übersetzen. Gesagt, getan und zwar in JavaScript:

var Kreiszahl, Summe, n, Produkt, k;

for (Summe = 0, n = 0; n <= Infinity; n++) {
    for (Produkt = 1, k = 1; k <= n; k++) {
        Produkt *= k / (2 * k + 1);
    }
    Summe += Produkt;
}
Kreiszahl = 2 * Summe;

Dieses Programm ist nicht optimal in Sachen Effizienz und anderer Hinsicht – man sollte es gar nicht laufen lassen, denn bis n den Wert Infinity überschreitet, könnte es eine Weile dauern. Ich möchte nur zeigen, wie die Formel in einer Programmiersprache dargestellt werden kann.

Die Zuweisungen Summe = 0 und Produkt = 1 am Anfang der Schleifen entsprechen der allgemeinen mathematischen Definition der leeren Summe als 0, dem neutralen Element der Addition, und des leeren Produkts als 1, dem neutralen Element der Multiplikation. Die Zuweisungen n = 0 und k = 1 kommen dagegen speziell von der betrachteten Formel, wo sie unter dem Summen- und Produktzeichen festgelegt sind.

Kommentare

  1. Nennt sich der Kuchen in England pi deswegen, da er rund ist?

    Ich hatte ruby mit meinem Knuddelwuff gemacht: ich habe ihn gerubyt.

    Gute Nacht

  2. Die Kuchenfrage kann ich verneinen, @1. Für Infos zur Herkunft von englischen Wörtern greife ich gern auf http://www.etymonline.com/ zurück. Der Eintrag zum Kuchen mit Hinweis auf eine Verwendung bereits im Mittelalter findet sich hier:
    http://www.etymonline.com/index.php?term=pie

    Der griechische Buchstabe π wurde für die Kreiszahl laut Wikipedia erst in der Neuzeit verwendet und könnte von περιφέρεια (vgl. Peripherie) abgeleitet sein. Die Gemeinsamkeit bei der Aussprache mit dem englischen Rundgebäck ist also eher zufällig. Dabei ist die Aussprache nicht einmal die einzige Ähnlichkeit. Gern wird darauf hingewiesen, das PIE, die richtige Schriftart vorausgesetzt, in Spiegelschrift wie 314 und damit wie die ersten drei Dezimalstellen der Kreiszahl aussieht.

    Angenehme Träume wünscht
    Martin

  3. Wenn ich eine runde Zahl will, kann ich dafür auch SChleifpapier nehmen?

  4. @3: Das kommt auf den Einzelfall an. Aus 307 kann man mit Schleifpapier beispielsweise eine runde Zahl machen, aus 113 hingegen nicht.