Enough LaTeX for basic logic typesetting

I’m currently taking a (meta)logic class. There are assigned problem sets. A lot of people either don’t know how to type logical symbols or else cannot be bothered to fight with Word. I’m a fan of LaTeX. I like it for several reasons, one of them being easy use of logical symbols.

There are a lot of guides to using LaTeX. To my knowledge, none start from nothing and end with just what’s needed for a logic class. So here I fill in that void. My goal is to be comprehensive enough to cover what’s needed to type up assignments for a logic class while not including anything else so someone can be up and running with just this guide in a few minutes.

Setting Up

First, you need something to edit your text and something to compile it to a PDF or whatever other format you like. I personally use Overleaf. It’s a free, online application that lets you type in one column with live updates to what it looks like on the page in the other column. It also has templates, allows collaboration, and has some other nice features that are not important to our purposes here. (Full disclosure: The link is a referral link. If you refer people, you get extra storage space and pro features for free. The default free features and space are fine, though.)

There are other popular options. If you need to compile offline, I suggest TeXmaker. If you go this route, you need to download MiKTeX. If you want to write something very long, you may want to type into a text editor and then copy and paste into Overleaf or TeXmaker. (By “long” I mean over fifty pages, give or take based on things like included pictures.)

Onto the actual typing process. If you’re using Overleaf, go to the “My Projects” page and then create a new project. Choose “blank paper”. Then you’ll have this code:

\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
(Type your content here.)
\end{document}

If you’re not using Overleaf, go ahead and put that code into your document.

There is a bit of tweaking to the basic template to make this better. Before the \begin{document} line, add a line containing just \usepackage{amsmath}. Then add lines with add \title{TITLE} and \author{NAME}. Then after the \begin{document} line, add a line saying \maketitle. If you want it to not be huge, type \small\maketitle\normalsize. (The \small makes it small. The \normalsize makes the stuff after it normal size.) At this point my document looks like this.

\documentclass{article}
\usepackage[utf8]{inputenc}
\title{Phil 125 Homework Set 2}
\author{Nichole Smith}
\begin{document}
\small\maketitle\normalsize
(Type your content here.)
\end{document}

Typing the Document

Everything after this replaces “(Type your content here.)”.

  • Typing letters and numbers works as you would expect. Certain symbols are used by the code so typing them is not straightforward. (The & and squiggle brackets are the most notable here.)
  • Single line breaks are ignored. So if you type some stuff, hit return/enter, and then type some more, it will show up as one paragraph. (This can be useful. I like to type every step of a proof in a new line. Then it compiles into a paragraph.)
  • Double line breaks give you a new paragraph.
  • If you want extra space, use \vspace{1cm} as its own paragraph. You can choose lengths other than 1cm if you want.

Onto the logic specific stuff. Of critical importance is math mode. Whenever you surround text with dollar signs ($) LaTeX treats it as mathematical symbols. So, if you type $x$ it will be italicized like a variable should be. Math mode does not have spaces. So $two words$ will not have a space between them. (If you need a space while in math mode for some reason, “\ ” gives you a space. That is a backslash with a space after it.)

Note all logical symbols have to be typed in math mode. The logical symbols:

  • \land gives you the and symbol
  • \lor gives you the or symbol
  • \lnot gives you the not symbol
  • \rightarrow gives you the material conditional arrow
  • \Rightarrow gives you the logical implication arrow
  • \leftrightarrow gives you the biconditional arrow
  • \Leftrightarrow gives you the logical equivalence arrow (So, capitalizing the arrow tags makes them the bigger arrows)
  • = is the equal sign
  • Parentheses are parentheses
  • \subset gives you the strict subset symbol
  • \subseteq gives you the subset symbol
  • In general, typing \not immediately before another symbol puts a slash through it. E.g. \not\subseteq gives you the not a subset symbol
  • \in gives you the element symbol
  • \times gives you the times sign
  • \neq gives you the not equal sign
  • > and < can be typed directly. To get the or equal to versions, type \geq or \leq
  • \emptyset gives you the empty set symbol
  • \{ and \} give you squiggle brackets
  • \& gives you the & symbol
  • \top and \bot give you the tautology and contradiction symbols.
  • \Alpha and \alpha give you upper and lower case alpha. The other Greek letters are similar.
  • | gives you the Sheffer stroke and \downarrow gives you the Peirce dagger.
  • An underscore gives you subscript. A caret gives you superscript. E.g. p sub 1 is typed $p_1$.
  • \hdots gives you a nice ellipsis. Use \cdots if you want them elevated to the middle of the line.
  • Anything on a line after % will not be compiled. So if you want to make a note to self, you can.

I think this covers it. Most of them are pretty straightforward. If you do need more, this webpage has a nifty list. Or, detexify lets you just draw what you want, and it gives you the code. At this point you’re ready to type stuff.

I will provide an example now. Say problem 2 asks you to symbolize “neither both p and q, nor q only if p” with the and, material conditional, and nor operators. Then you type:

2. The sentence “neither both $p$ and $q$, nor $q$ only if $p$” symbolized with the and, material conditional, and nor operators is $(p\land q)\downarrow(q\rightarrow p)$.

Truth Tables

LaTeX can also handle tables very nicely. If you’re lazy, there are online tools to make tables. They have quite a few options. You’re probably fine using that.

I prefer more control for my truth tables. Again, you’re fine without. But in case anyone is interested, I’ll explain. Maybe you’ll want to be able to edit the code the generator spits out. (I often use a generator to start and then tweak as needed.) First, here’s the code for the truth table for p_1 or not p_1:

\begin{tabular}{c|cccc}
$p_1$ & $p_1$ & $\lor$ & $\lnot$ & $p_1$ \\
\hline
T & & \textcolor{red}{T} & F & \\
F & & \textcolor{red}{T} & T & \\
\end{tabular}

How do you construct this thing? First set up the tabular environment:

\begin{tabular}{}
\end{tabular}

The second set of squiggle brackets after \begin let you set up the columns. Each c gives a center aligned column. If you want left or right aligned columned, use l or r instead of c. Yes, you can mix the three. The | gives a vertical line going down the entire table. Note for truth tables you want a column for every single symbol. That way nothing is under the variables and you can have a straight line of Ts and Fs under the connectives. So, for p_1 or not p_1 we want a column for p_1, a bar, then columns for each of p_1, or, not, and p_1. That’s four more. So, we have:

\begin{tabular}{c|cccc}
\end{tabular}

We have the table set up. Now to fill it in. The first line of the table has the atomic sentences on the left and then the sentence in question on the right. Type the content of each column, separated by &. Then end the line with \\. So, to have the first line of the truth table:

\begin{tabular}{c|cccc}
$p_1$ & $p_1$ & $\lor$ & $\lnot$ & $p_1$ \\
\end{tabular}

To have the horizontal line, type \hline on its own line. Then more on to the next row, doing the same thing you did for the first row. Note that if you want nothing in a certain spot, just leave the space between the two &s empty. So, for the second row, you want a T under the first p_1 (The one on the left side of the table), then nothing under the first one on the right, then a T under the and sign, an F under the not sign, and then nothing under the last p_1. The third line is similar.  Now we have:

\begin{tabular}{c|cccc}
$p_1$ & $p_1$ & $\lor$ & $\lnot$ & $p_1$ \\
\hline
T & & T & F & \\
F & & T & T & \\
\end{tabular}

This is a fine truth table. But, maybe you want to bold the truth values for the main connective. To make T bold, type \textbf{T}. You can replace “T” with other text, of course. If you’re using Overleaf, highlighting the text and pressing Ctrl+B will put the tag in automatically.

This brings us to the complete table as quoted in the beginning of this section.

The comment section is open. Questions and suggestions are welcome.

(Edit notes: As Soren pointed out, I originally put the wrong symbol for commenting. I also realized the amsmath package is not needed, so I removed that. Since these are usually printed in black and white anyway, I got rid of color in favor of boldface type. This has the added benefit of avoiding the need for packages entirely. In the third edit I added the \leq and \geq tags as well as \hdots because I realized they’re needed for indexing variables. \hdots requires the amsmath package, so I added that line back in. Using bold instead of color still seems to be better.)



3 responses to “Enough LaTeX for basic logic typesetting”

  1. > Anything on a line after # will not be compiled.

    Don’t you mean ‘%’? # is for macro parameters, usually.

    Liked by 1 person

    1. Yes. Thank you for pointing that out.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: