## No post today

April 14, 2015

Except to say that there’sn’t a post today. Things have been busy lately, so no entry for this week. ¯\_(ツ)_/¯

## Beauxindex

April 7, 2015

Last week I presented a simple script that helped spot almost identical index entries. Since then, I’ve sought a better index style. While I found most book use a rather plain index style, I was looking for something that used space efficiently yet was easy to read.

The idxlayout package will help us customize the index somewhat. It will allow us to set the number of columns, set the distance between them, maybe with a line, set font size, and decide how we want topics arranged. In the image above, I have used the singlepar layout. It is invoked by adding the itemlayout=singlepar option as a package option:

\usepackage[itemlayout=singlepar]{idxlayout}


With an extra bit of configuration somewhere else in your LaTeX source:

\renewcommand{\see}[2]{\mdseries \emph{\seename} #1 }
\renewcommand{\indexsubsdelim}{~\raisebox{0.2ex}{\resizebox{1em}{0.5ex}{$\sim$}}
} % symbol(s) between subtopics
\setkeys{ila}{columns=3} % nb columns
\setkeys{ila}{rule=0pt} % width of line between cols (0=no line)
\setkeys{ila}{columnsep=1em} % spacing between columns
\setkeys{ila}{font=footnotesize} % base font size
\setkeys{ila}{indentunit=1em} % how much to indent after first line
\setkeys{ila}{justific=standard} % raggedright is a mess!
\setkeys{ila}{initsep=0.5em plus 0.5em minus 0.1em} % rubberband length between paragraphs
\printindex


The idxlayout package isn’t very well documented, so you might have to dig in the source code itself to find values that you’re interested in changing. It produces:

Which appears… flat.

These tweak make a much better-looking index than the makeindex default, but there are still a few things to tweak. The thing that bothered me most is that we do not really have a clear separation between the head topic and subtopics. To achieve good visual separation, we must redefine yet more variables. This time in makeindex. However, makeindex customization involves an “index style” file:

\makeindex[options=-s back-matter/index.ist]


The configurable elements are found in makeindex‘s man page. The necessary elements are set in the index.ist file, as follows:

item_0 "\n \\bfseries \\item "
item_1 "\n \\mdseries \\subitem "
item_01 "\n \\mdseries \\indexsubsdelim "
item_x1 "\n \\mdseries \\indexsubsdelim "


The item_0 variable defines the style with which a topic will be displayed. For now, in bold. The item_xy variables define the style change when you go from a level x item to a y level item. Since I want subtopic to appear “normal face”, \mdseries is inserted just before the subitem. The item_x1 seems to be also necessary to ensure that only the first topic in a paragraph is bold.

The changes produce the index as shown in the image at the beginning

## Checking a LaTeX Index

March 31, 2015

This week again, LaTeX. This time, the index. At the end of a document, you will usually find an index so that, if you don’t have a magical ctrl-f, you can find something fast in the book.

In LaTeX, creating an index is really easy. You include the package makeindex, and plant \index{topic!subtopic} tags in the text (preferably just besides the word you want to index, the \index command doesn’t understand paragraphs). You add \printindex somewhere else in your document and you run pdflatex (or just latex) to get the index generated. That’s all fine except that it doesn’t provide checks. It adds to the index whatever you typed, and doesn’t give warnings if you have an entry “compression” and an entry “compresion” (because, you know, typos happen). Let’s see how we can somewhat fix that.

## A LaTeX Bibliography Hack

March 24, 2015

Yet another LaTeX hack! This time to insert text between the bibliography/reference header and the actual references. I’ve had, I admit, no really good reason to do this, as I might have added some text before the bibliography, but it made a lot more sense to include the paragraph there.

## A (simple) LaTeX Example Environment

March 17, 2015

This week again, a little LaTeX. As you know, I’m putting the finishing touches to a manuscript I’ve been working on for a little bit more than a year now. Those “finishing touches” always start simple, then end up asking for quite a bit more LaTeX programming that I’d like.

This week, I worked quite a bit to repair my “example” environment that include example number, extra margin, and a different colored box around the text. This helps locate and distinguish examples from normal text. But my first version had little problems. Like equations centered not on the example text but still relative to the whole page. Bummer. Let’s see how I fixed all that.

## The Tosser

March 10, 2015

Here’s a LEGO dice-tossing machine I built.

The two complicated parts are the reduction gear train and the flaps that re-center the dice so that the machine can pick it up correctly each time.

The gear train is composed of several gear reducers, which are composed of a small gear driving a larger gear (thus many turns of the small, driving gear, are needed for the big one to make a complete rotation). Each large gear share its spindle with a small gear that drives the next stage. The gear box yields a 243:1 reduction (which is $3^5$ to 1). Otherwise the motor spins too fast and just, well, eject the dice from the machine.

The flaps are used to funnel the dice back in the middle of the tray, where it can be picked up again.

*
* *

The next step would be to use OCR to read the dice value and see if, in the long run, the tosser is a strong number generator or if it is flawed in some way. Can’t really remember where I got the 16-sided dice, but there are some to be found online.

## X marks the spot

March 3, 2015

I’m presently finishing a large text typeset in LaTeX. Of course, in many places I just put a note to “fill later” and moved on with the rest of the text. But now, I must hunt them down and fill the holes.

Good for me, I had the idea of writing a LaTeX command that not only marked the spot in the rendered page, like this:

…but also, by using the command itself, marked the spot in the source code itself. Otherwise, I’d have to find all the “fill me later” “add more” and whatnots.

The command itself is really not that complicated:

\usepackage{pifont}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}

\definecolor{bloodred}{HTML}{B00000}

\newcommand{\fillme}[1]{\textcolor{bloodred}{\smash{\ding{54}}}\message{Forgotten fillme on input line \the\inputlineno}} % 54 big fat X


The command takes an argument, which is ignored, but is quite convenient to leave the future you a message:

\fillme{blurb something about leibniz vs newton}


The command depends on the packages pifont for the dingbat and xcolor to define a nice dark red. The command itself does two things. One is to typeset a blood red X in the generated document so that it is conspicuous. The other is to output a message that can be parsed automagically by a script, making their eradication easier.