A simple LaTeX Template, with nice structure, and commands for ease of use
| software | what for ? | installation link |
|---|---|---|
| latexmk | compile with complex options and watch for changes | official doc |
| zsh [for now] | shell targeted for the scripts "compile", "clear_aux" and "watch" | oh-my-zsh tuto |
| latex | seems obvious | official doc |
| [linux] evince | pdf viewer | |
| [macos] skim | pdf viewer | official website |
| [windows] gsview32 | pdf viewer |
LuaTex supports utf-8 characters from the get go, which is nice when you want to use cyrillic letters as I do in my mathematics notations.
The integration of lua within latex allows for much more flexible documents, and sometimes coding in latex much faster, for instance if you want to input name-[number].tex files and then modify, add new files, remove some, ... It is much easier to just modify the range rather than deleting or adding complete lines on \input{...} :
\ifluatex % with luatex \begin{luacode*} for i = 1, 7 do local filename = "doc/maths/cmd_maths-" .. i .. ".tex" tex.sprint("\\input{" .. filename .. "}") end \end{luacode*} \else % without luatex \input{doc/maths/cmd_maths-1.tex} \input{doc/maths/cmd_maths-2.tex} \input{doc/maths/cmd_maths-3.tex} \input{doc/maths/cmd_maths-4.tex} \input{doc/maths/cmd_maths-5.tex} \input{doc/maths/cmd_maths-6.tex} \input{doc/maths/cmd_maths-7.tex} \fi➤ efficient way to compile and watch for changes in your LaTeX files
If you use zsh (which I do) : [or just copy paste what's inside into your terminal]
zsh compile.zshzsh watch.zsh# —— compile & watch flags ——— zsh compile.zsh -r # compiles report only zsh compile.zsh -a # compiles article only zsh compile.zsh -ra # compiles article combined with report zsh compile.zsh -d # compiles documentation only zsh compile.zsh -t # compiles tests only zsh compile.zsh -h # flags help # —— Exclusive to compile ——— zsh compile.zsh # compile all files (doc/report/test)The same applies to watch script
if you use another shell (bash/...) you might have to adapt the script [chatGPT if you are hurry] to the targeted shell.
📦LaTeX-Template ┣ 📂aux_files ‹◀ latex compiling aux files (cache) ┣ 📂doc ‹◀ github README ┣ 📂out ‹◀ compiled files ┃ ┣ 📜documentation.pdf ┃ ┣ 📜rapport.pdf ┃ ┣ 📜tests.pdf ┣ 📂src ‹◀ actual project source code ┣ 📜.latexmkrc ‹◀ compile settings ┣ 📜clear_aux.zsh ┣ 📜compile.zsh ┗ 📜watch.zsh The documentation can be accessed easily in a pdf format at the location :
📦LaTeX-Template ┣ 📂out ‹◀ compiled files ┃ ┣ 📜documentation.pdf ← formatted custom commands and settings documentation ┃ ┣ 📜rapport.pdf ┃ ┣ 📜tests.pdf (doc/doc.md)
📦LaTeX-Template ┣ 📂out ‹◀ compiled files ┃ ┣ 📜documentation.pdf ┃ ┣ 📜rapport.pdf ┃ ┣ 📜tests.pdf ← testing commands and environments The project Latex-Template relies on the following latex packages to provide a better tex experience :
| Package | Used For | include/pacakges/ |
|---|---|---|
| lualatex | latex engine (utf-8 : cyrillic characters in math mode) | - |
| ifluatex | import and define stuff depending on the engine used (lua/pdf)latex | base.tex |
| — | — | — |
| inputenc | utf-8 input for pdflatex engine (if used) | base.tex |
| fontenc | font encoding | base.tex |
| —*— | —*— | —*— |
| graphicx | including images | base.tex |
| —*— | —*— | —*— |
| amsmath | maths | base.tex |
| amssymb | maths symbols | base.tex |
| stmaryrd | symbols for computer science | base.tex |
| amsthm | theorem environments | theorem_styles.tex |
| mathtools | convenient convergence arrows | base.tex |
| —*— | —*— | —*— |
| hyperref | url links with custom text | base.tex |
| url | typesetting URLs | base.tex |
| —*— | —*— | —*— |
| babel | french names for envs | base.tex |
| —*— | —*— | —*— |
| multicol | typesetting documents with multiple columns | base.tex |
| multirow | table cells spanning multiple rows | base.tex |
| —*— | —*— | —*— |
| minitoc | table of content of the chapter | base.tex |
| —*— | —*— | —*— |
| xcolor | custom colors | base.tex |
| float | improved interface for floating objects | base.tex |
| —*— | —*— | —*— |
| table | tables | base.tex |
| xcdraw | drawing tables with TikZ | base.tex |
| array | extending the array and tabular environments | base.tex |
| tabularx | beautiful tables with adjustable-width column | base.tex |
| booktabs | publication quality tables | base.tex |
| —*— | —*— | —*— |
| algorithm2e | algorithm environments | base.tex |
| comment | commenting out large blocks of code with env | base.tex |
| —*— | —*— | —*— |
| tikz-cd | creating commutative diagrams | base.tex |
| tikz | creating graphics programmatically | base.tex |
| pgfplots | latex curve graphs | base.tex |
| —*— | —*— | —*— |
| footmisc | make sure footnotes are bellow | base.tex |
| geometry | page margin dimensions | base.tex |
| pdfpages | include PDF documents | base.tex |
| — | — | — |
| dsfont | double stroke : better than \mathbb | fonts.tex |
| avant | font (used for pdflatex sans serif font) | fonts.tex |
| fontawesome5 | icons [\info / \warn ...] | fonts.tex |
| mfirstuc | capitalizing the first letter of a word | fonts.tex |
| ulem | emphasis is now underline | fonts.tex |
| unicode-math | cyrillic letters in math mode | fonts.tex |
| — | — | — |
| framed | framed or shaded regions that can break across pages | others.tex |
| awesomebox | env with bar at the left [\info / \warn ...] | others.tex |
| changepage | margin adjustment and detection of odd/even pages | others.tex |
| enumitem | create custom enum environments | others.tex |
| pifont | checkmarks for checkmarks environment | others.tex |
| datetime | advanced time formatting and date commands | others.tex |
| — | — | — |
| shellesc | pygmentize call must use console commands | minted.tex |
| minted | code highlight | minted.tex |
- original setting : english
code --goto src/include/packages/base.tex:14:19- original settings :
- top : 1.5cm
- bottom : 1.5cm
- margin : 2.5cm
code --goto src/include/packages/base.tex:40code --goto src/include/settings/project.texcode --goto src/include/settings/render.tex


