Showdown KaTeX With mhchem

mhchem support for Showdown-KaTeX

Background

I’ve written about bringing user-defined KaTeX macros into Hugo a few years ago. Looking back, I realized that I only knew how to copy code at that time.

Goal

  1. To replace the current code for my math editor with Showdown-KaTeX.
  2. To bring mhchem into my LaTeX + Markdown sandbox.

Motivation

To get the benefits of the three free (as in “freedom”) technologies.

  1. Markdown syntax is (much) simple(r than its LaTeX equivalent, especially for tables, ordered/unordered lists, etc).
  2. LaTeX syntax for math is, in the long run, worth learning, so that your fingers can stay on the keyboard while editing math expressions.
  3. mhchem allows writing chemical equations conveniently as in the previous point.

However, Rattle has pointed out the difficulties of mixing LaTeX and Markdown syntax. In his proposed solution for WordPress, he first renders KaTeX before moving to Markdown. He has provided an example use case with a dollar sign $ in a normal Markdown content (e.g. An apple costs $1.5.)

[Read More]

Tikz to SVG in VS Code

My little LaTeX Workshop recipe

Goal

View SVG graphics generated from TikZ code in VS Code.

LaTeX TikZ coding + SVG preview in VS Code

Compile TikZ code and preview SVG in VS Code

with LaTeX Workship and SVG Preview

Part I: generate SVG using LaTeX Workshop

From the IDE’s parameters tab, I found the tools and recipes parameters. I clicked my user settings settings.json twice: once through the tools, and once through the recipes. Each click generated an array of default recipes or tools. Each of the former is a sequence of the later, which represents a command. The official examples and placeholders are easy to follow. Here’s the two JSON objects that I added.

[Read More]

dvisvgm Guide for TikZ Pictures with Pattern Filling

A quick note of the right commands for the conversion

Problem

I had issues in getting a SVG from a TikZ picture containing a pattern filling: https://github.com/mgieseki/dvisvgm/issues/158. The reported issue was created last year, and it’s marked as fixed. Nonetheless, I had this issue even though my MikTeX was up-to-date.

Discussion

  1. I wanted to confirm whether my dvisvgm.exe, which had been shipped with MikTeX, was latest.
  2. I gave a MWE illustrating the problem with the graph of y = (x + 1)² with region under the curve filled with a pattern in the above issue. I knew that’s probably off-topic, but the package owner might have some insights about the problem. It turned out that PDF → SVG was partly supported by dvisvgm. Using DVI → SVG, I managed to get the filling pattern, but I lost the beautiful Computer Modern Roman fonts—that’s another issue.
  3. Hoping for a response from the owner for the previous problem, I started https://github.com/mgieseki/dvisvgm/issues/186. He suggested the use of --no-fonts or --font-format=woff. I observed no difference in the local filesystem. I uploaded everything I got through GitHub so that he could see what my dvisvgm.exe had output. I didn’t expected that the Computer Modern Roman fonts disappeared on GitHub side. If I hadn’t asked there, I would have never known that it’s the web browser’s security measure not to load the embedded font data in a SVG loaded from a server.

Skills learned

Meaning of some commonly used parameters of dvisvgm:

[Read More]
LaTeX  dvisvgm  SVG 

Git Warning: LF Will Be Replaced by CRLF

I’m using Git Bash while writing this post. I’ve never tested the commands on *nix.

Background

Some of the tags and titles were written as “LateX”/“latex” in the source files. I batch corrected them with Git Grep and GNU Sed.

git grep --name-only -IiE ^-\ latex$'\r'? content/{post,page} | \
xargs -n1 sed -i "s/^- latex/- LaTeX/I"

I tried to match

  1. a leading - using ^-
  2. a whitespace \ escaped by a backslash to avoid wrapping the special character below with double quotes
  3. the string “latex” (case-insensitive)
  4. the carriage return \r, which is represented by $'\r' in bash, for at most once (?)

I observed that wrapping $'\r' with "" would lead to no match.

[Read More]
Git  sed 

LaTeX Table Background Color for TeXit

Problem

In my previous post about LaTeX tables, I used \cellcolor{white} to override the \rowcolor{cyan} in a cell in the leftmost column, which was the column type name.

On Discord, that cell became black because TeXit inverted black and white.

LaTeX table with TeXit problem

Discussion

I first tried blending black and white, and I found that black!27 and black!28 give a good approximation to Discord’s background color.

Thanks to this Discord Color Palette and a bot command channel on a server, I’ve observed that the desired color is RGB(54,57,62).

[Read More]
LaTeX  TeXit 

LaTeX Multirow Multicol Table Coloring

Inspiration

Number of two-digit numbers not containing the digit ‘8’.

Code

  • The standalone class can’t be used with \caption.
  • *{8}{c} means 8 c.
  • >{\columncolor{cyan}}c gives the column color. It \usepackage[table]{xcolor}.
  • \rowcolor{cyan} overrides the column colors.
  • \cellcolor{white} overrides the above two commands. It has to be carried out one-by-one without any fancy package.
  • \multicolumn{n}{<alignment>}{content} defines a multi-column cell.
  • \multirow{n}{*}{content} defines a multi-row cell. It \usepackage{multirow}. It can’t contain \multicolumn.
  • \cline{i-j} draws a horizontal line above the row from column i to column j.
  • No fancy way of coloring multirow cells without fancy packages.
  • \multirow{-9} at the last row creates a cell spanning nine rows from bottom to above, so that its content won’t be covered by colors of former rows.
  • \rotatebox[origin=[clr]]{angle}{content}: rotate content by angle anticlockwise with [clr] as the rotation center.
\documentclass[12pt]{article}
\usepackage{multirow}
\usepackage[table]{xcolor}
\usepackage{tikz}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Sample \LaTeX{} multirow table}
\vspace*{1ex}
\label{multiprogram}
\begin{tabular}{|c|c|*{8}{c}>{\columncolor{cyan}}cc|}
\hline
\multicolumn{2}{|c|}{\multirow{2}{*}{}} & \multicolumn{10}{c|}{unit digit} \\\cline{3-12}
\multicolumn{2}{|c|}{} & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \\\hline
& 1 & &  &  &  &  &  &  &  &  &  \\
& 2 & &  &  &  &  &  &  &  &  &  \\
& 3 & &  &  &  &  &  &  &  &  &  \\
& 4 & &  &  &  &  &  &  &  &  &  \\
& 5 & &  &  &  &  &  &  &  &  &  \\
& 6 & &  &  &  &  &  &  &  &  &  \\
& 7 & &  &  &  &  &  &  &  &  &  \\
\rowcolor{cyan} \cellcolor{white}
& 8 & &  &  &  &  &  &  &  &  &  \\
\multirow{-9}{*}{\rotatebox[origin=c]{90}{tens digit}}
& 9 & &  &  &  &  &  &  &  &  &  \\\hline
\end{tabular}
\end{table}
\end{document}

Result:

[Read More]
LaTeX  table 

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 

First Experience with ASP.NET Core MVC & PostgreSQL

Goal

To build an ASP.NET Core 5 MVC web app linked with a PostgreSQL.

Motivation

  1. SQL Server is proprietary.
  2. SQLite used in Microsoft’s ASP.NET Core 5 MVC tutorial isn’t made for web apps.
  3. MySQL doesn’t perform well with concurrent read-writes. It’s dual-licensed like GitLab.
  4. Some users find PostgreSQL cost-effective.

Useful tutorials

  1. MS’s tutorial in item 2 above.
  2. Wes Doyle’s YouTube video goes through the steps
  3. MS’s tutorial for Razor Pages with EF Core migrations

Steps

  1. Create a superuser in the database.

    [Read More]

GIMP w'ont Start after Ubuntu Distro Upgrade

Problem

After upgrading to Ubuntu 20.04 form 18.04, I wasn’t able to start GIMP 2.10. The message was in the same format as that in a related Ask Ubuntu question, except that the version numbers were greater.

I attempted installing the package gegl, which was irrelavant to the problem.

Analysis

I found the answers mentioning the package libgegl helpful.

$ dpkg -l | grep gegl
ii  gegl                                       0.4.22-3                         
     amd64        Generic Graphics Library Test Program
ii  libgegl-0.4-0:amd64                        1:0.4.18+om-0ubu18.04.18~ppa     
     amd64        Generic Graphics Library
ii  libgegl-common                             1:0.4.18+om-0ubu18.04.18~ppa     
     all          Generic Graphics Library - common files

Despite deletion of ppa:otto-kesselgulasch/gimp by ppa-purge, that leaves a trace in /etc/apt/sources.list.d.

[Read More]
Ubuntu  GIMP 

Recover Mysql Root Password

Just a little linklog to a relevant page on How to Forge. Root privileges are needed.

  1. Stop service: service mysql stop

  2. Start MySQL server w/o password: mysqld_safe --skip-grant-tables &

  3. Connect to CLI client as root: mysql -u root

  4. Reset root password. Here’s the syntax for ≥v.5.7.6.

    mysql> use mysql;
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("newpass");
    mysql> flush privileges;
    mysql> quit
    
  5. Repeat step 1, or killall mysqld if it doesn’t work. Output can be different on different Linux distro.

    [Read More]
MySQL