Dvisvgm's Issue With Fill Pattern

Goal

Generate SVG file for TikZ graphics.

Method

  1. TeX → PDF with PDFLaTeX
  2. PDF → SVG with dvisvgm -P filename

Example: I generated a PGF plot from the source code on my personal template.

working SVG
working PDF
Git Bash for PDF
Git Bash for SVG

Problem

When I applied this method to the following TeX code in my previous post, dvisvgm -P returns a blank SVG.

\documentclass[tikz,border=2pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.6}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=center,legend style={at={(0.7,0.7)},anchor=south west}]
\addplot [domain=-3:3, thick, smooth, yellow] { 1/sqrt(2*pi)*exp(-x^2/2) };
\addlegendentry{$y = \frac{1}{\sqrt{2\pi}} e^{-x^2/2}$};
\addplot [dashed, yellow] coordinates {(1.5,0) (1.5,0.14)};
\addlegendentry{99th percentile};
\addplot[domain=-3:1.5, pattern=north east lines,draw=none, fill opacity=0.3]
  { 1/sqrt(2*pi)*exp(-x^2/2) } \closedcycle;
\end{axis}
\end{tikzpicture}
\end{document}

This code passes the compiler.

[Read More]
LaTeX  dvisvgm  SVG 

To Be Improved Normal Curve

First function plot with pattern fill

Adaptations for standalone documents:

  • \usetikzlibrary{pattern} before \begin{document}
  • \pgfplotsset{compat=1.6}
\begin{tikzpicture}
\begin{axis} [axis lines=center,legend style={at={(0.7,0.7)},anchor=south west}]
\addplot [domain=-3:3, thick, smooth, yellow] { 1/sqrt(2*pi)*exp(-x^2/2) };
\addlegendentry{$y = \tfrac{1}{\sqrt{2\pi}} e^{-x^2/2}$};
\addplot [dashed, yellow] coordinates {(1.5,0) (1.5,0.14)};
\addlegendentry{99th percentile};
\addplot[domain=-3:1.5, pattern=north east lines,draw=none, fill opacity=0.3]
{ 1/sqrt(2*pi)*exp(-x^2/2) } \closedcycle;
\end{axis}
\end{tikzpicture}

tikz function shaded region

LaTeX 

Trigonometric Functions by Unit Circle

For secondary school students, I define cosine and sine as the x and y-components of the point A (cos θ, sin θ) on the unit circle x² + y² = 1, and the tangent function as the quotient of sine over cosine.

\begin{tikzpicture}[scale=3]
\coordinate (O) at (0,0);
\coordinate (H) at (0.6,0);
\coordinate (A) at (0.6,0.8);
\coordinate (E) at (1,0);
\coordinate (T) at (1,0.8/0.6);
\draw (O) circle (1);
\draw[->] (-1.3,0) -- (1.3,0) node [right]{$x$};
\draw[->] (0,-1.3) -- (0,1.3) node [above]{$y$};
\begin{scope}[thick]
\draw (O) node [below left] {$O$}
    -- (H) node [below right] {$H$}
    node [below, midway] {$\cos \theta$}
    -- (A) node [below, midway, sloped] {$\sin \theta$}
    node [above=5pt] {$A$}
    -- cycle node [above left, midway] {$1$};
\begin{scope}
    \clip (O) -- (A) -- (H) -- cycle;
    \draw (O) circle (0.1) node[right=7pt, above=5pt, anchor=west] {\small $\theta$};
\end{scope}
\draw (H) rectangle ++(-0.1,0.1);
\draw (E) rectangle ++(-0.1,0.1);
\draw (E) node [below right] {$E$}
    -- (T) node [below, midway, sloped] {$\tan \theta$}
    node [above, right] {$T$}
    -- (A);
\end{scope}
\end{tikzpicture}

sine cosine unit circle

[Read More]
LaTeX 

Matrix Diagonalisation and Change of Basis

Here’s the $\LaTeX$ code of my diagram for matrix diagonalisation to be used on Discord.

Why do matrix diagonalisation on square matrix $P$?

If we can find a diagonal matrix $D$ and a square matrix $Q$ such that $P = QDQ^{-1}$, then we can easily compute $(P + \lambda I)^n$ for any scalar $\lambda$ and integer $n$ because $D^n$ is easy to compute.

\[\begin{tikzcd}
    {{}} & {{}} & \cdots & {} \\
    {{}} & {{}} & \cdots & {{}}
    \arrow["P", from=1-1, to=1-2]
    \arrow["{Q^{-1}}"', from=1-1, to=2-1]
    \arrow["D"', from=2-1, to=2-2]
    \arrow["Q"', from=2-2, to=1-2]
    \arrow["P", from=1-2, to=1-3]
    \arrow["D"', from=2-2, to=2-3]
    \arrow["P", from=1-3, to=1-4]
    \arrow["D"', from=2-3, to=2-4]
    \arrow["Q"', from=2-4, to=1-4]
\end{tikzcd}\]

After viewing the power of the Discord bot $\TeX{}$it, which renders $\LaTeX$ code on Discord, I gave up spending more time on exploring more functionalities of $\KaTeX$ (say, commutative diagrams) because Discord and $\LaTeX$ spread math knowledge much better than a static blog for basic math: the former allows instant feedback from the reader. The later is better for taking notes. To display more complicated graphics, I can compile to PDF first, then use dvisvgm with -P for --pdf. (The small -p selects --page=ranges.)

[Read More]
LaTeX 

LaTeX Code for Linear System

\begin{align} A\mathbf{x} &= \mathbf{b} \\ \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix} &= \begin{pmatrix} b_1 \\ b_2 \\ b_3 \end{pmatrix} \\ \begin{bmatrix} \vert & \vert & \vert \\ \mathbf{a}_1 & \mathbf{a}_2 & \mathbf{a}_3 \\ \vert & \vert & \vert \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} &= \mathbf{b} \\ x_1 \mathbf{a}_1 + x_2 \mathbf{a}_2 + x_3 \mathbf{a}_3 &= \mathbf{b} \tag{$\star$} \\ \begin{pmatrix} a_{11} x_1 + a_{12} x_2 + a_{13} x_3 \\ a_{21} x_1 + a_{22} x_2 + a_{23} x_3 \\ a_{31} x_1 + a_{32} x_2 + a_{33} x_3 \end{pmatrix} &= \begin{pmatrix} b_1 \\ b_2 \\ b_3 \end{pmatrix} \\ x_1 \begin{pmatrix} a_{11} \\ a_{21} \\ a_{31} \end{pmatrix} + x_2 \begin{pmatrix} a_{12} \\ a_{22} \\ a_{32} \end{pmatrix} + x_3 \begin{pmatrix} a_{13} \\ a_{32} \\ a_{33} \end{pmatrix} &= \begin{pmatrix} b_1 \\ b_2 \\ b_3 \end{pmatrix} \end{align}

Source code:

[Read More]
LaTeX 

Ways to Draw Diagrams Displayed on Math.SE

I wanted to start a meta question, but I don’t see a point of that after viewing some related posts listed at the end of the next subsection.

Intended question

You may vote on your preferred way.

Ways Advantages Disadvantages
AMScd supported on Math.SE for a long time
  • no diagonal arrows
  • syntax less well-known
  • Two-way arrows $\rightleftarrows$ look odd
array
  • supported on Math.SE for a long time
  • easier syntax
  • write basic diagonal arrows like $\nearrow$
  • fine tuning spacing is hard
  • diagonal arrows only work for neighboring nodes
ASCIIFlow WYSIWYG interface lines are rendered as slashes in code
TikZ
  • well known syntax
  • can draw pretty diagrams
not supported on SE, need to import as picture
others?

Related questions:

[Read More]

Pandoc LaTeX Mermaid on GitLab CI

Goal

To provide an open-source alternative to the Docker image escalope/pandoc-mermaid-plantuml, whose Dockerfile isn’t available.

The rationale behind these difficult setup is simple: construct informative Mermaid diagram with intuitive Markdown syntax in an open-source and economic way.

This newly constructed Docker image is entirely on GitLab. No Docker Hub account is needed. For sample usage, consult .gitlab-ci.yml in my test project.

Difficulties

  1. issues raghur/mermaid-filter#51 and #52
  2. issue gitlab-org/gitlab-runner#4566

Useful code/articles

  1. time-machine-project/requests-for-comments@470b0c5 Dockerfile
  2. Reduce Docker Image Sizes Using Alpine
  3. Best practices for building docker images with GitLab CI with the accompanying gist
  4. The code block in the highlighted comment in item 2 of the above section
  5. pandoc installation for Docker
  6. Sample Dockerfile for Alpine Linux in the troubleshooting of Puppeteer
  7. sc250024/docker-mermaid-cli@3c9ddb5 src/puppeteerConfigFile.json
  8. raghur/mermaid-filter project README’s section about Puppeteer config file

Mise à jour du template de lettre

Template de lettre en Xe$\LaTeX$

Contexte

J’ai publié mon template de lettre en Xe$\LaTeX$ sur mon ancien blog (hébergé sur GitHub Pages) il y a trois ans.

Problème et solution

Après le changement de l’ordi portable, il me faut l’installation du pacquetage “texlive-lang-french” sur la nouvelle version d’Ubuntu. Sinon, une erreur du pacquetage Babel se surviendra.

! Package babel Error: Unknown option `frenchb'. Either you misspelled it
(babel)                or the language definition file frenchb.ldf was not foun
d.

See the babel package documentation for explanation.
Type  H <return>  for immediate help.


l.445 \ProcessOptions*

?

A ce stade, Xe$\LaTeX$ parviendra à compiler le fichier $\TeX$ avec une remarque à propos de l’obsolescence de l’option frenchb pour le pacquetage Babel.

[Read More]