some highlighting improvements, add Latex formatting post

This commit is contained in:
2021-04-18 11:05:50 -06:00
parent c2b313eae0
commit aecccdaf12
5 changed files with 293 additions and 6 deletions

View File

@@ -0,0 +1,5 @@
/* works okay in light or dark mode with friendly hugo chromastyle */
.language-latex {color: gray}
.language-bash {color: gray}
.language-make {color: gray}
.language-txt {color: gray}

82
assets/css/syntax.css Normal file
View File

@@ -0,0 +1,82 @@
/* Background */ .chroma { background-color: #f0f0f0 }
/* Other */ .chroma .x { }
/* Error */ .chroma .err { }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* Keyword */ .chroma .k { color: #007020; font-weight: bold }
/* KeywordConstant */ .chroma .kc { color: #007020; font-weight: bold }
/* KeywordDeclaration */ .chroma .kd { color: #007020; font-weight: bold }
/* KeywordNamespace */ .chroma .kn { color: #007020; font-weight: bold }
/* KeywordPseudo */ .chroma .kp { color: #007020 }
/* KeywordReserved */ .chroma .kr { color: #007020; font-weight: bold }
/* KeywordType */ .chroma .kt { color: #902000 }
/* Name */ .chroma .n { }
/* NameAttribute */ .chroma .na { color: #4070a0 }
/* NameBuiltin */ .chroma .nb { color: #007020 }
/* NameBuiltinPseudo */ .chroma .bp { }
/* NameClass */ .chroma .nc { color: #0e84b5; font-weight: bold }
/* NameConstant */ .chroma .no { color: #60add5 }
/* NameDecorator */ .chroma .nd { color: #555555; font-weight: bold }
/* NameEntity */ .chroma .ni { color: #d55537; font-weight: bold }
/* NameException */ .chroma .ne { color: #007020 }
/* NameFunction */ .chroma .nf { color: #06287e }
/* NameFunctionMagic */ .chroma .fm { }
/* NameLabel */ .chroma .nl { color: #002070; font-weight: bold }
/* NameNamespace */ .chroma .nn { color: #0e84b5; font-weight: bold }
/* NameOther */ .chroma .nx { }
/* NameProperty */ .chroma .py { }
/* NameTag */ .chroma .nt { color: #062873; font-weight: bold }
/* NameVariable */ .chroma .nv { color: #bb60d5 }
/* NameVariableClass */ .chroma .vc { }
/* NameVariableGlobal */ .chroma .vg { }
/* NameVariableInstance */ .chroma .vi { }
/* NameVariableMagic */ .chroma .vm { }
/* Literal */ .chroma .l { }
/* LiteralDate */ .chroma .ld { }
/* LiteralString */ .chroma .s { color: #4070a0 }
/* LiteralStringAffix */ .chroma .sa { color: #4070a0 }
/* LiteralStringBacktick */ .chroma .sb { color: #4070a0 }
/* LiteralStringChar */ .chroma .sc { color: #4070a0 }
/* LiteralStringDelimiter */ .chroma .dl { color: #4070a0 }
/* LiteralStringDoc */ .chroma .sd { color: #4070a0; font-style: italic }
/* LiteralStringDouble */ .chroma .s2 { color: #4070a0 }
/* LiteralStringEscape */ .chroma .se { color: #4070a0; font-weight: bold }
/* LiteralStringHeredoc */ .chroma .sh { color: #4070a0 }
/* LiteralStringInterpol */ .chroma .si { color: #70a0d0; font-style: italic }
/* LiteralStringOther */ .chroma .sx { color: #c65d09 }
/* LiteralStringRegex */ .chroma .sr { color: #235388 }
/* LiteralStringSingle */ .chroma .s1 { color: #4070a0 }
/* LiteralStringSymbol */ .chroma .ss { color: #517918 }
/* LiteralNumber */ .chroma .m { color: #40a070 }
/* LiteralNumberBin */ .chroma .mb { color: #40a070 }
/* LiteralNumberFloat */ .chroma .mf { color: #40a070 }
/* LiteralNumberHex */ .chroma .mh { color: #40a070 }
/* LiteralNumberInteger */ .chroma .mi { color: #40a070 }
/* LiteralNumberIntegerLong */ .chroma .il { color: #40a070 }
/* LiteralNumberOct */ .chroma .mo { color: #40a070 }
/* Operator */ .chroma .o { color: #666666 }
/* OperatorWord */ .chroma .ow { color: #007020; font-weight: bold }
/* Punctuation */ .chroma .p { }
/* Comment */ .chroma .c { color: #60a0b0; font-style: italic }
/* CommentHashbang */ .chroma .ch { color: #60a0b0; font-style: italic }
/* CommentMultiline */ .chroma .cm { color: #60a0b0; font-style: italic }
/* CommentSingle */ .chroma .c1 { color: #60a0b0; font-style: italic }
/* CommentSpecial */ .chroma .cs { color: #60a0b0; background-color: #fff0f0 }
/* CommentPreproc */ .chroma .cp { color: #007020 }
/* CommentPreprocFile */ .chroma .cpf { color: #007020 }
/* Generic */ .chroma .g { }
/* GenericDeleted */ .chroma .gd { color: #a00000 }
/* GenericEmph */ .chroma .ge { font-style: italic }
/* GenericError */ .chroma .gr { color: #ff0000 }
/* GenericHeading */ .chroma .gh { color: #000080; font-weight: bold }
/* GenericInserted */ .chroma .gi { color: #00a000 }
/* GenericOutput */ .chroma .go { color: #888888 }
/* GenericPrompt */ .chroma .gp { color: #c65d09; font-weight: bold }
/* GenericStrong */ .chroma .gs { font-weight: bold }
/* GenericSubheading */ .chroma .gu { color: #800080; font-weight: bold }
/* GenericTraceback */ .chroma .gt { color: #0044dd }
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
/* TextWhitespace */ .chroma .w { color: #bbbbbb }

View File

@@ -22,12 +22,13 @@ pygmentsCodefencesGuessSyntax = true
title = "Carl Pearson"
author = "Carl Pearson"
# copyright = "2020-2021"
description = "University of Illinois ECE PhD Student"
description = "Postdoctoral Appointee, Sandia National Labs. All opinions are my own."
profilePicture = "img/avatar.jpg"
keywords = ""
favicon = "favicons/"
# example ["css/custom.css"]
customCss = ["css/custom.css"]
# added css/syntax.css after hugo gen chromastyles --style=mannai > assets/css/syntax.css
customCss = ["css/custom.css","css/syntax.css"]
# customCss = []
# example ["js/custom.js"]
customJs = []
@@ -49,7 +50,7 @@ doNotLoadAnimations = true
## Math settings
[params.math]
enable = false # options: true, false. Enable math support globally, default: false. You can always enable math on per page.
use = "mathjax" # options: "katex", "mathjax". default is "katex".
use = "katex" # options: "katex", "mathjax". default is "katex".
## Social links
# use 'fab' when brand icons, use 'fas' when standard solid icons.

View File

@@ -155,7 +155,8 @@ To start photoprism, run `sudo docker-compose up -d`
You can look at logs with `sudo docker-compose logs`. you should not see anything like "failed to connect to database"
If you goof this up, you need to do something like (this will delete everything)
```
``` bash
sudo docker-compose down
sudo docker volume prune
sudo rm -r storage database
@@ -172,7 +173,7 @@ First, create `/etc/nginx/sites-enabled/photoprism.example.com`
Put the following content in it.
This is taken from the PhotoPrism instructions, except `proxy_pass http://localhost:2342;` instead of `proxy_pass http://docker.homenet:2342;`
```
```txt
# PhotoPrism Nginx config with SSL HTTP/2 and reverse proxy
# This file gives you an example on how to secure you PP instance with SSL
server {
@@ -273,7 +274,7 @@ I guess this causes the photoprism image to be restarted unless you explicitly s
## Get updates
```
```bash
docker-compose pull photoprism
docker-compose stop photoprism
docker-compose up -d photoprism

View File

@@ -0,0 +1,198 @@
+++
title = "Tips for Technical Writing in Latex"
date = 2021-04-18T00:00:00
lastmod = 2021-04-18T00:00:00
draft = false
# Authors. Comma separated list, e.g. `["Bob Smith", "David Jones"]`.
authors = ["Carl Pearson"]
tags = ["latex"]
summary = "Accumulated tips for formatting technical writing in Latex"
# Projects (optional).
# Associate this post with one or more of your projects.
# Simply enter your project's folder or file name without extension.
# E.g. `projects = ["deep-learning"]` references
# `content/project/deep-learning/index.md`.
# Otherwise, set `projects = []`.
projects = []
# Featured image
# To use, add an image named `featured.jpg/png` to your project's folder.
[image]
# Caption (optional)
caption = ""
# Focal point (optional)
# Options: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight
focal_point = "Center"
# Show image only in page previews?
preview_only = true
categories = []
# Set captions for image gallery.
+++
I recently finished my Ph.D thesis (yay!) and accumulated a few tips related to formatting technical writing in Latex.
## Hyphenation and Line Breaks
Many people are familiar with the `\hyphenation` command, which tells Latex where it may hyphenate words it does not already know about to prevent lines from being too long.
Latex will not know about many technical words, or function names that are not "plain english."
In English writing, line breaks should occur at syllable boundaries only.
```latex
\hyphenation{cuda-Memcpy-Peer-Async bi-di-rec-tion-al}
```
You can also allow breaks at underscores, which is convenient for certain programming languages or libraries.
```latex
\renewcommand\_{\textunderscore\allowbreak}
```
You may then want to *prevent* line breaks in some places.
Use `\mbox` for that.
```latex
\mbox{\_\_device\_\_}
```
## lstlisting
The `lstlisting` environment is used to add and format code in Latex documents.
You can use `minipage` to prevent short `lstlistings` from being broken across pages.
You can also use the `\noindent` command to prevent the `minipage` from being indented if it starts a new paragraph
The
```latex
\noindent
\begin{minipage}{\linewidth}
\begin{lstlisting}
\end{lstlisting}
```
## SI units
Use the `siunit` package to automatically format numbers with SI units.
```latex
\usepackage[binary-units, group-separator={,}]{siunitx}
\SI{512}{\byte}
```
## Digit grouping and separators.
Latex can make it hard to manually format digit grouping and separators in numbers.
The `number` package makes this easy.
```latex
\num{242000}
```
## CLI spell-checking
You can use `aspell` with the Latex filter (to reduce false positives).
The `-t` flag puts it in Latex mode.
```bash
aspell -t -c main.tex
```
## Latex and Version Control
Write one latex sentence on each line, so version control diffs are easier to follow.
It feels a little unnatural at first.
```latex
This is one sentence.
This is another sentence.
```
## Latex and arxiv
Arxiv does not want a raw PDF, annoyingly.
You can defined a makefile target that will create a zip for you to upload.
You'll need to tweak this to get all the files uploaded you need.
Arxiv usually wants the pre-processed `bib` file that ends in `bbl`, so you need to run `bibtex`.
```make
arxiv: main.tex main.bib ${FIGS}
pdflatex ${PAPER}.tex
bibtex ${PAPER}.aux
rm -f upload.zip
zip -r upload.zip main.tex main.bbl figures acmart.cls ACM-Reference*
```
## Tables that are too wide or too tall
Use `resizebox` for tables that are too wide or too tall (which is almost always the case, right???)
To match the text width:
```latex
\label{tab:related}
\resizebox{\textwidth}{!}{%
\begin{tabular}{...}
\end{tabular}
}%resizebox
\end{table*}
```
To match the text height:
```latex
\label{tab:related}
\resizebox{!}{\textheight}{%
\begin{tabular}{...}
\end{tabular}
}%resizebox
\end{table*}
```
## Reducing space between captions and figures
I think there is too much wasted space between figures and captions in some templates.
You may be able to tweak this yourself with the `caption` package.
```latex
\usepackage{caption}
\captionsetup{skip=1pt}
```
## Shortcuts for repeated formatting
You may wish to repeatedly apply formatting to a particular word.
You can define your own command for that.
The `xpsace` command will try to be smart about whether to put a space after the word.
```latex
\newcommand{\StreamData}{\textit{StreamData}\xspace}
Now \StreamData is in italics.
% notice the absence of \xspace
\newcommand{\DenseData}{\textit{DenseData}}
When I use \DenseData{} I may need to put the braces afterwords to get a space.
```
# Figures and text
Use the `pifont` package, and then the `\ding` command
```latex
\usepackage{pifont}
This: \ding{202} will make a black circle with a white "1" in it.
You can then draw a matching object in your figure.
\ding{203} will make a 2, \ding{204} will make a 3, etc.
```