Latex: Difference between revisions

 
(33 intermediate revisions by the same user not shown)
Line 10: Line 10:
Download [https://miktex.org MikTex].
Download [https://miktex.org MikTex].
It includes the TeXworks editor and will download packages as you use them.
It includes the TeXworks editor and will download packages as you use them.
This will not take up as much disk space as a full install.
This will not take up as much disk space as a full install but will require internet access to download new packages.
===Full Install===
===Full Install===
====Windows====
====Windows====
Download [https://www.tug.org/texlive/ TexLive].
Download [https://www.tug.org/texlive/ TexLive] using the [https://www.tug.org/texlive/acquire-iso.html ISO images].
This is several gigabytes since it includes all the popular LaTex packages and takes a while to install.
This is ~4 gigabytes since it includes all the popular LaTeX packages and takes a while to install.
You'll also need an editor. I recommend installing [[Atom_(text_editor) | Atom]] with the following packages:  
You'll also need an editor. I recommend installing [[Atom_(text_editor) | Atom]] with the following packages:  
* <code>latex</code> for calling the TexLive compiler
* <code>latex</code> for calling the TexLive compiler
* <code>language-latex</code> for syntax highlighting
* <code>language-latex</code> for syntax highlighting
* <code>pdf-view</code> for viewing the compiled pdf.
* <code>pdf-view</code> for viewing the compiled pdf.
<pre>
apm install latex language-latex pdf-view
</pre>


====Linux====
====Linux====
Line 28: Line 31:
pdflatex [mydocument.tex]
pdflatex [mydocument.tex]
</syntaxhighlight>
</syntaxhighlight>
* Note to add bibliography, you need to run <code>pdflatex</code>, <code>bibtex</code>, <code>pdflatex</code> or <code>rubber --pdf</code>.
==Usage==
==Usage==


===Fancy Math Font===
===Fancy Math Font===
See [https://tex.stackexchange.com/questions/58098/what-are-all-the-font-styles-i-can-use-in-math-mode this answer.]


[[File:LatexMathFonts.png|500x500px]]
[[File:LatexMathFonts.png|500x500px]]
See [https://tex.stackexchange.com/questions/58098/what-are-all-the-font-styles-i-can-use-in-math-mode this answer.]
<syntaxhighlight lang="latex">
<syntaxhighlight lang="latex">
% Use mathbb for the set of reals R or the set of complex numbers C
% Use mathbb for the set of reals R or the set of complex numbers C
Line 44: Line 51:


<div style="display: inline-block;vertical-align: top;">
<div style="display: inline-block;vertical-align: top;">
[[File:SpacingMathEx2.png|300x300px]]
[[File:SpacingMathEx2.png|350px]]
</div>
</div>
<syntaxhighlight lang="latex" style="display: inline-block;vertical-align: top; background: none;">
<syntaxhighlight lang="latex" style="display: inline-block;vertical-align: top; background: none;">
Line 76: Line 83:
\end{minipage}
\end{minipage}
</pre>
</pre>
===Sections===
====Numbering====
To change the section numbering from numbers to letters, add the following:
<syntaxhighlight lang="latex">
% Changes sections to use capital letters
\renewcommand{\thesection}{\Alph{section}}
% Changes subsections to use lowercase letters
\renewcommand{\thesubsection}{\thesection.\alph{subsection}}
</syntaxhighlight>


===Programming===
===Programming===
Line 83: Line 101:
===Custom Commands===
===Custom Commands===
You can define your own commands using <code>\newcommand</code>
You can define your own commands using <code>\newcommand</code>
<syntaxhighlight lang="latex">
\newcommand{\notdone}{{\color{red} Not done!!}}
</syntaxhighlight>


===Custom Operators===
===Custom Operators===
Line 93: Line 114:
\DeclareMathOperator{\sign}{sign}
\DeclareMathOperator{\sign}{sign}
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator{\argmin}{argmin}
\DeclareMathOperator*{\argmin}{argmin}
\DeclareMathOperator{\argmax}{argmax}
\DeclareMathOperator*{\argmax}{argmax}
</syntaxhighlight>
</syntaxhighlight>
;Notes
* Adding <code>*</code> puts subscript elements beneath the operator.
==Programming==
==Programming==
===For Each Loops===
===For Each Loops===
Line 109: Line 134:
===Font===
===Font===
;Font size
;Font size
<pre>
<syntaxhighlight lang="latex">
\documentclass[12pt]{article}
\documentclass[12pt]{article}
</pre>
</syntaxhighlight>


;Font type
;Font type
* Times New Roman - <code>\usepackage{mathptmx}</code>
* Times New Roman - <code>\usepackage{mathptmx}</code>
==Tables==
===Multirow and Multicolumns===
<syntaxhighlight lang="latex">
\usepackage{multirow}
\multirow{3}{4em}{Dataset A}
</syntaxhighlight>
===Newlines===
[https://tex.stackexchange.com/questions/2441/how-to-add-a-forced-line-break-inside-a-table-cell stackexchange line break in table cell] 
[https://tex.stackexchange.com/questions/331716/newline-in-multirow-environment linebreak in multirow]
To have a newline in a cell, you can use the [https://www.ctan.org/pkg/makecell makecell] package. 
<code>\makecell{Some really \\ longer text}</code>. 
To make this align left: <code>\makecell[l]{Some really \\ longer text}</code>
For multirow cells, you can use <code>\multirowcell{5}{Numbers\\from\\ 1 to 5}</code>. 
By default, this will align center. You can make it align left: <code>\multirowcell{2}[0pt][l]{Number\\ Letter}</code>.
==Table Generator==
[https://www.tablesgenerator.com/ https://www.tablesgenerator.com/] can generate table code from existing tables.
==Figures==
<syntaxhighlight lang="latex">
\begin{figure}[!htbp]
  \includegraphics[width=\linewidth]{/path/to/figure}
  \caption{}
  \label{}
\end{figure}
</syntaxhighlight>
Be sure to use vector figures (pdf or pgf) instead of raster ones (png, jpeg).<br>
See [https://timodenk.com/blog/exporting-matplotlib-plots-to-latex/ https://timodenk.com/blog/exporting-matplotlib-plots-to-latex/] on how to export matplotlib to pgf.
In the snippet <code>[!htbp]</code> represents the placement preferences.
* <code>!</code> means to ignore some placement limitations
* <code>h</code> mean to place the figure here
* <code>t</code> means top of the page.
* <code>b</code> means bottom of the page.
* <code>p</code> means to place it on a figure only page.
If you add the [https://ctan.mirrors.hoobly.com/macros/latex/contrib/float/float.pdf the float package], you can also use <code>[!H]</code> which is a more strict version of <code>[!h]</code>.
===Subfigure===
See [https://www.overleaf.com/learn/latex/How_to_Write_a_Thesis_in_LaTeX_(Part_3):_Figures,_Subfigures_and_Tables#Subfigures overleaf reference]
<syntaxhighlight lang="latex">
% In the header:
\usepackage{caption}
\usepackage{subcaption}
\begin{figure}[!htbp]
  \centering
  \begin{subfigure}[b]{0.45\linewidth}
    \centering
    \includegraphics[width=\linewidth]{graph1}
    \caption{This is graph1.}
    \label{fig:a}
  \end{subfigure}
  \hfill
  \begin{subfigure}[b]{0.45\linewidth}
    \centering
    \includegraphics[width=\linewidth]{graph2}
    \caption{This is graph2.}
    \label{fig:b}
  \end{subfigure}
  \caption{}
  \label{fig:ab}
\end{figure}
</syntaxhighlight>


==Enumerate==
==Enumerate==
Line 148: Line 244:
<syntaxhighlight lang="latex">
<syntaxhighlight lang="latex">
\newcommand{\degree}{\ensuremath{^{\circ}} }
\newcommand{\degree}{\ensuremath{^{\circ}} }
\newcommand{\etal}{{\em et al. }}
\newcommand{\etal}{{\em et al.}}
\newcommand{\ceil}[1]{{\lceil #1 \rceil}}
\newcommand{\ceil}[1]{{\lceil #1 \rceil}}
\newcommand{\floor}[1]{{\lfloor #1 \rfloor}}
\newcommand{\floor}[1]{{\lfloor #1 \rfloor}}
\newcommand{\bmat}[1]{\begin{bmatrix}#1\end{bmatrix}}
\newcommand{\pmat}[1]{\begin{pmatrix}#1\end{pmatrix}}
</syntaxhighlight>
</syntaxhighlight>


Line 228: Line 327:
\usepackage[linesnumbered,ruled]{algorithm2e}
\usepackage[linesnumbered,ruled]{algorithm2e}


\begin{algorithm}[H]
\begin{algorithm}[!htbp]
  \KwData{this text}
  \KwData{this text}
  \KwResult{how to write algorithm with \LaTeX2e }
  \KwResult{how to write algorithm with \LaTeX2e }
Line 244: Line 343:
\end{algorithm}
\end{algorithm}
</syntaxhighlight>
</syntaxhighlight>
==Verbatim==
The <code>verbatim</code> package gives you the environment <code>verbatim</code>.
You can use <code>\verbatiminput</code> to embed text files.
===<code>fancyvrb</code>===
The <code>fancyvrb</code> package gives you the environment <code>Verbatim</code> which has more options. 
To embed in a figure, you can use <code>BVerbatim</code>. 
There is also <code>\VerbatimInput</code>, <code>\BVerbatimInput</code>, <code>\LVerbatimInput</code>.


==Document Class==
==Document Class==
Line 291: Line 399:
</syntaxhighlight>
</syntaxhighlight>
}}
}}
==Exporting==
See [https://en.wikibooks.org/wiki/LaTeX/Export_To_Other_Formats#Convert_to_image_formats https://en.wikibooks.org/wiki/LaTeX/Export_To_Other_Formats#Convert_to_image_formats].
===Images===
On Linux, you can convert PDF files to PNG files using:
<pre>
pdftoppm paper.pdf paper-page -r 300 -png
</pre>
* <code>-r</code> specifies the DPI. Default is 150.
===Latex Cleanup===
If you need to submit the latex, e.g. to Arxiv, you can use this tool to help clean it up:
https://github.com/google-research/arxiv-latex-cleaner


==Resources==
==Resources==
* [http://detexify.kirelabs.org/classify.html Detexify LaTeX handwritten symbol recognition]
* [http://detexify.kirelabs.org/classify.html Detexify LaTeX handwritten symbol recognition]
[[Category:Programming languages]]