StackExchange ist verkauft

StackExchange, bekannt als StackOverflow, ist an Prosus verkauft worden für 1,8 Milliarden Dollar. Das beinhaltet die TeX StackExchange Q&A Seite (TeX.SE). Prosus ist ein Technology-Investor und eine Holding Company die bereits Unternehmen wie Udemy, Codecadamy und Brainly (“Your 24/7 homework helper”) besitzt. Nach $153 Millionen Investor-Kapital, Einstellen eines früheren Investment-Bankers als Kopf, mehreren Entlassungs-Runden, Ausscheiden von Moderatoren, Effizienter-Werden duch Standardisieren der Sites, Aussteige-Spekulationen, war es nicht wirklich überraschend. Die offizielle Kommunikation und Joel Spolskys Bekanntmachung sagen “business as usual” und dass alles genauso weiterläuft. Also, nix zu sehen hier.

Es gibt auch nichtkommerzielle (La)TeX Q&A Seiten und Foren, unterstützt durch TeX user groups und vor allem DANTE, wie: LaTeX.org, TeXwelt.de, TeXnique.fr, and goLaTeX.de.

Schreibe einen Kommentar

Das coffeestains-Paket

Nach einem kurzen Gespräch auf TeXnique.fr hat Patrick Bideault das coffeestains-Paket auf TikZ portiert. Das ursprünglich von Hanno Rein in 2009 entworfene Paket erfuhr damit eine Modernisierung und läuft einwandfrei mit pdfLaTeX, XeLaTeX, und LuaLaTeX auf TeX Live 2021. Damit steht einer weiteren breiten Anwendung in den Homeoffices dieser Welt nichts im Wege.

Ein Anwendungsbeispiel mit viel Kaffee:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{coffeestains}
\begin{document}
\coffeestainA{1}{1}{0}{6cm}{4cm}
\coffeestainB{0.8}{1}{-60}{-4cm}{4cm}
\coffeestainC{0.3}{1}{180}{0cm}{0cm}
\coffeestainD{0.5}{0.5}{100}{-1cm}{2cm}
\blinddocument
\end{document}
Beispieldokument

Die Syntax ist, verkürzt: \coffeestain(A|B|C|D){Transparenz}{Skalierung}{Drehwinkel}{X-Offset}{Y-Offset}. Mehr steht in der Dokumentation, die auch mit viel Kaffee entstanden ist.

Schreibe einen Kommentar

Flaggen der Welt

Wilhelm Haager hat im April 2021 das Paket worldflags veröffentlicht. Damit kann man Flaggen aller Nationen und einiger weiterer Gebiete und Organisationen in TikZ zeichnen, sowohl als TikZ-Bild als auch als pic-Baustein. Durch eine Vielzahl Optionen kann man Breite, Höhe, “Hängen”, Spiegel, Drehen und mehr einstellen. Die einfachste Nutzung ist geht schon z.B. mit

\worldflag{BR}

was eine brasilianische Flagge zeichnet:

Brasilianische Flagge

Mit etwas mehr Arbeit anhand des Beispiels im Handbuch mit Fahnenstangen:

\documentclass[border=10pt]{standalone}
\usepackage{worldflags}
\begin{document}
\begin{tikzpicture}[x=1mm,y=1mm]
\def\w{30}\def\d{20}
\pgfdeclarehorizontalshading{flagpole}{30mm}{color(0mm)=(white);
  color(1mm)=(brown); color(2mm)=(black)}
\flagsdefault[width=15mm,hang=20]
\pic (fr) [country=FR,width=16mm,rotate=-\w] at (\d,0) {worldflag};
\pic (de) [country=DE,width=15mm,rotate=\w,turn=180] at (-\d,0) {worldflag};
\fill [shading=flagpole,shading angle=-\w,
       rotate around={-\w:(fr-nw)}](fr-nw)-|++(-2,-60)-|cycle;
\fill [shading=flagpole,shading angle=\w,
       rotate around={\w:(de-nw)}](de-nw)-|++(2,-60)-|cycle;
\node [rotate={50},below left  = 1.5cm and -0.6cm of de-nw] {\TeX welt.de};
\node [rotate={-50},below left  = 1.2cm and 0.9cm of fr-ne] {\TeX nique.fr};
\end{tikzpicture}
\end{document}
Deutsche und französische Flaggen

Die Flaggen wurden mithilfe der Konstruktions-Angaben von vexilla-mundi.com gezeichnet, einige komplexere Embleme wurden aus SVG-Daten von Wikipedia mittels Inkscape in TikZ-Code übersetzt.

Schreibe einen Kommentar

Erstellen einer Mitgliederstatistik als Balkendiagramm

BalkendiagrammNeu

BalkendiagrammNeuMitCode.pdf

Hier eine Mitgliederstatistik als Vergleich von 2017 A.D. und des Vorjahres; nach der Anzahl der Neuregistrierungen und der Anzahl deren Fragen.

Als besondere Herausforderung erwies sich das Erstellen einer zweiten y-Achse auf der rechten Seite, auf der die prozentualen Veränderungen gegenüber dem Vorjahr angezeigt werden sollen.

Da pgfplots hierfür scheints keinen Standard hat, muss getrickst werden.  Zunächst gegenüber den Koordinatenzahlen der linken y-Achse  irgendwo unsichtbare “textmarks” platzieren; und dann “nodes near coord” an dem ausgelesenen maximalen x-Wert der axis-Umgebung platzieren.

So bekommt man eine saubere, konsistente zweite y-Achse.

Weiterlesen

Schreibe einen Kommentar

Spritzkuchen in Space

Heute habe ich einen Plot überarbeitet, um ihn auf TeXnique.fr zu stellen. Also, der sollte ungefähr so aussehen:

 

Spritzring
(Foto von Guido Draheim).

Also wie ein Spritzkuchen, auch Spritzring genannt. Nur, hm, mathematischer und digitaler.
Weiterlesen

Schreibe einen Kommentar

Baum oder nicht Baum

Heute sah ich eine ältere unbeantwortete Frage auf TeX.SE. Der Anlass war, mehrere Bäume zu zeichnen, die durch eine Linie verbunden sind. Am Ende kann man das wieder als Baum sehen, und etwas in komplizierter verschachtelter Baum-Syntax basteln, doch ich dachte mir, das kann man unbefangen in normalem TikZ angehen:

  • Ein paar Stile für Knoten-Typen definieren, klar
  • Die Koordinaten der wesentlichen Knoten auf dem Blatt platzieren samt Texten
  • Weitere Nodes platzieren, wie es gut aussieht, dabei möglichst relativ positionieren: zwischen, über oder unter anderen Nodes, mit Faktor und ggf. Verschiebung
  • Mit Linien verbinden

Dabei kann man die calc-library Syntax verwenden für Zwischenpunkte mit Faktor, Verschiebung, oder Projektion auf Linien. Dank relativer Bezüge kann man immer noch an Längen oder Faktoren justieren, und die Nodes wandern mit.
Weiterlesen

Schreibe einen Kommentar

Ternäre Diagramme

Gerade sah ich ein QAPF-Diagramm, das interessant aussah:

Intrusive
Das lässt sich sicher auch gut mit TikZ machen:
Weiterlesen

Ein Kommentar

Eine Mindmap vom Matheplaneten

Heute begegnete mir eine TikZ-Mindmap – in freier Wildbahn! Ich sah sie auf der Matheplanet-Award-Verleihung. Ich konnte nicht umhin, ein bisschen daran herumzubasteln, aber nur wenig. Weil ich Serifen in Diagrammen nicht so dolle mag, lieber Styles definiere statt Schriftbefehle in nodes zu setzen, bisschen kürze und einrücke und mit Leerzeichen den Code etwas für mich leserlicher entspanne… also abgesehen vom Codegebastel sah die Mindmap fast genauso aus:

mindmap

Und der Code hierfür ist, ausgehend von Martins Code leicht optimiert:

\documentclass[margin=10pt]{standalone}
\PassOptionsToPackage{usenames,svgnames}{xcolor}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\begin{document}
\pagecolor{black!50!green!50!}
\begin{tikzpicture}[
             nodes = { font = \sffamily\bfseries, align = center,
                       execute at begin node = {\hspace{0pt}}},
      large/.style = { concept, font = \Large\sffamily\bfseries},
       huge/.style = { concept, font = \Huge\sffamily\bfseries},
      black/.style = { color = black},
      white/.style = { color = white},
    black45/.style = { color = black, sibling angle = 45},
    white40/.style = { color = white, sibling angle = 40},
  ]
  \path[mindmap, concept color = purple!30!yellow!70!, text = white]
    node[huge, scale = 0.85, text = purple] {Matheplanet}
    [clockwise from = -60]
    child[concept color = blue] {
      node[large, level distance = 2.4cm] {Fachbereiche}
      [clockwise from = 25]
      child[white, level distance = 2.4cm]
        { node[concept, scale = 0.8] {Informatik} }
      child[white40, level distance = 2.4cm] {
        node[concept, scale = 0.7] {\LaTeX} }
      child[white, sibling angle = 38,
        level distance = 2.4cm] { node[concept, scale = 0.7] {3M} }
      child[white, sibling angle = 42] {
        node[concept, scale = 1.25] {Mathematik}
      [clockwise from = -15]
      child[white, level distance = 2.5cm] {
        node[concept, scale = 0.9] {Olympiadeaufgaben} } }
      child[white, sibling angle = 43] {
        node[concept, scale = 0.9] {Physik}
      [clockwise from = 85]
      child[white, level distance = 2.1cm]
        { node[concept] {Ingenieurwesen} } }
    }
    child[concept color = brown!80!yellow] {
      node[large, text = black] {Rubriken}
      [clockwise from = -75]
      child[black45, level distance = 2.6cm] {
        node[concept] {Buchreviews} }
      child[black45] { node[concept, scale=0.6] {WMM} }
      child[black45] { node[concept, scale=0.8] {Links} }
      child[black45] { node[concept] {Artikel}
        [clockwise from = 25] child[black]
          { node[concept] {Montagsreport} } }
    }
    child[concept color = red!50!white] {
      node[concept, text = black] {Besucher}
      [clockwise from=90]
      child[black45] { node[concept] {Chat} }
      child[black45, level distance = 2.5cm] {
        node[concept, scale = 0.8] {Nachtwache} }
    }
    child[concept color = teal] {
      node[large] {Events}
      [clockwise from = 160]
      child[white] { node[concept, scale = 0.85] {Schach}
      [clockwise from = 82] child[white,
        level distance = 1.7cm] { node[concept] {MPCC} } }
      child[white] { node[concept] {Treffen}
          [clockwise from = 25]
      child[white] { node[concept] {Impulsvortrag} }
      child[white, sibling angle = 240] { node[concept]
        {Regional} } }
      child[white] { node[concept] {Award} }
      child[white] { node[concept, scale=0.7] {Challenge} }
    }
  child[concept color = green!50!LimeGreen] { node[large] {Mitglieder}
 [clockwise from = 90]
   child[white] { node[concept] {Senioren}
     [clockwise from = 30] child[white] {
       node[concept, scale = 1.4] {Wissen} } }
  child[white40] { node[concept, scale = 0.8] {Moderatoren}
    [clockwise from = 20]
  child[white, level distance = 1.8cm] {
    node[concept] {Ordnung} } }
  child[white40] { node[concept, scale = 0.7] {Spender}
    [clockwise from=33]
   child[white, level distance = 1.7cm] {
     node[concept, scale = 0.8] {Geld} }
  }
  child[white40] { node[concept, scale=0.8] {Matroid}
    [clockwise from = -145] child[white] {
    node[concept] {Technik} }}
  }  
    child[concept color = red!90!cyan] {
      node[large, grow = -30] {Forum}
      [clockwise from = 61]
      child[white, level distance = 5cm, scale = 0.9] {
        node[concept] {Aktuelles \& Interessantes} }
      child[white, sibling angle = 28, level distance = 2.8cm] {
        node[concept] {Erfahrungsaustausch} }
      child[white, sibling angle = 36,
        level distance = 2.5cm] {
        node[concept, scale = 1.1] {Hilfestellung} }
      child[white, sibling angle = 39] {
        node[concept] {Zusammenarbeit}
  [clockwise from = -63]
  child[white] { node[concept] {Collatz} }
  child[white, level distance = 4cm, sibling angle = 17] {
    node[concept] {Streichholzgraphen} }
  child[white, sibling angle = 17] { node[concept] {Al Zimm.} } }
    child[white, sibling angle = 49, level distance = 2.5cm] {
      node[concept, scale = 0.95] {Knobelecke} }
  };
\end{tikzpicture}
\end{document}

Eine kleine hier eingefügte Sache ist execute at begin node = {\hspace{0pt}: TeX trennt das erste Wort eines Absatzes nicht, mit diesem kleinen Hack sorge ich dafür, dass die teils langen aber einzelnen Wörter in den nodes dennoch automatisch getrennt werden dürfen, da sie nicht mehr absolut am Absatzbeginn stehen. Kein manuelles Trennen mit - und \\ nötig.

Dort auf dem Matheplaneten fand wie gesagt gerade die Verleihung der Awards für beste Beteiligung statt, das 15. Mal nun. Damit werden die besten Helfer in Mathematik, Physik, Informatik, LaTeX, Mathematik-Software und mehr gewürdigt, gewählt durch die Mitglieder.

Ich freue mich darüber, einen Award als LaTeX-Helfer erhalten zu haben. Seit 2005 bin ich beim Matheplaneten dabei, das war wohl sogar meine erste aktive Beteiligung an einem Internet-Forum.

Kommentare: 2