Make sure you have a working LaTeX installation, including latexmk
.
Preferred method (for maximal reproducibility): Install Docker on your computer, use a pre-build docker image to run all LaTeX-related commands.
- Install Docker
docker pull mathematicalmichael/thesis
- Clone thesis and copy contents of
bin
to~/bin
on your computer. - Make sure
~/bin
is in yourPATH
variable:
mkdir -p ~/bin/
cp bin/* ~/bin/
You now have all the files you need to build the thesis, but we need to make your computer aware of them.
export PATH=$HOME/bin:$PATH
This makes your current shell session aware of the files we just moved (we could have replaced $HOME
with the directory of the repository and skipped moving them, but if you move the location of it, the PATH
will have to change accordingly.
If you add this line to
~/.bash_profile
(on macOS; it is~/.bashrc
in Linux), the programs will be accessible from any shell session.
You can skip copying the files if you only plan to use them within this project folder:
./bin/dmake
Moving them to somewhere in your path means you can just run the commands from anywhere on your computer. If you plan to use an IDE (Atom, TexMaker, etc), then the contents need to be in your PATH
variable.
Launch an interactive editor (using Binder):
This button/link is pointing to the
binder
branch of this repository and usingnbgitpuller
to sync latest changes frommaster
branch. These choices were made to expedite load times, since mybinder.org re-builds the environment if it detects commits. Thebinder
branch is an orphan, containing only the build files. The environment contains all the dependencies required to generate this dissertation.
When it launches:
- Change the web-address ending
/tree/...
to/lab
- Open the Terminal by clicking on the icon
- Copy/Paste the following commands:
cd template-thesis; make; make clean
You can then use the File-Browser on the left-hand side to navigate to
thesis/dissertation.pdf
and open a preview PDF in the JupyterLab web-app.
This will run the makefile, which calls LaTeXMake to fully compile the thesis with the bibliography and references.
Template based on this repository.
Clone the repository, cd thesis
, and execute make; make clean
to build the PDF, then open with your favorite viewer (a web-browser works).
Note that make
defaults to make dissertation.pdf
.
Alternatively, click the binder badge above, which will launch a Jupyterlab interface that has jupyterlab-latex pre-installed, so you can right-click on the opened
dissertation.tex
file toShow LaTeX Preview
(as per usual, it may take several builds for all citations and references to link properly). Usingmake
in Terminal is the proper workflow, butjupyterlab-latex
can technically be configured to runlatekmk
the same way the makefile does.
Docker is a container-orchestration platform which also offers a cloud registry. What this means is that if you have Docker installed on your computer (it runs on any platform), you can download a Linux image with all the dependencies required and build the thesis without installing Python or LaTeX on your computer, since it will be built in an container managed by Docker. This technology enables the Binder service above.
Clone the repo and cd
into the folder, then you can build the PDF with:
docker run --rm -v $(pwd):/tmp --workdir /tmp mathematicalmichael/math-user:thesis make
Jupyterlab is a good IDE, and launches with the Binder link above. You can run the Docker image to get the same environment locally in your web browser. Alternatively, you might choose to use a different IDE.
Assuming you have a local LaTeX installation (including latekmk
), you can use an editor to accomplish a very comfortable environment on your local machine in your favorite editor. I personally like Atom, so below are instructions to set up a LaTeX editor capable of building this thesis (with two-way SyncTeX):
If using Atom, here are the packages I installed in order to get things working (make sure the packages in /binder/apt.txt
are also installed on your computer first since these are the LaTeX dependencies on which we rely).
- atom-latex [0.8.10]
The following were simply for visual purposes (italics = highly recommend):
- minimap
- minimap-highlight-selected
- minimap-selection
- minimap-autohide
- minimap-lens
- highlight-selected
- highlight-line
- multi-cursor