Tex: Difference between revisions
imported>StefanSchroeder m Fix CTAN link |
imported>IgorM m Added category, formatting |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 9: | Line 9: | ||
TeX-documents are not What-you-see-is-what-you-get, but written in plain text, containing tags, commands and functions that instruct the TeX-engine how to lay out the text (or figures or anything else) on the page. | TeX-documents are not What-you-see-is-what-you-get, but written in plain text, containing tags, commands and functions that instruct the TeX-engine how to lay out the text (or figures or anything else) on the page. | ||
A minimal TeX-document | A minimal TeX-document can be created on the commandline using this shell-snippet: | ||
<pre> | <pre> | ||
cat > minimal.tex <<'EOF' | |||
\documentclass{article} | \documentclass{article} | ||
\begin{document} | \begin{document} | ||
Hello, Nix. | Hello, Nix. | ||
\end{document} | \end{document} | ||
EOF | |||
</pre> | </pre> | ||
Line 24: | Line 26: | ||
A good starting point is to install the TeX-Live basic setup: | A good starting point is to install the TeX-Live basic setup: | ||
<code>nix-env -iA | <code>nix-env -iA nixpkgs.texlive.combined.scheme-basic</code> | ||
After installation, the command <code>pdflatex</code> should be available. Save the minimal example above in a file called minimal.tex and compile it with <code>pdflatex minimal.tex</code> | After installation, the command <code>pdflatex</code> should be available. Save the minimal example above in a file called minimal.tex and compile it with <code>pdflatex minimal.tex</code> | ||
Line 30: | Line 32: | ||
The (pretty verbose) output will look similar to: | The (pretty verbose) output will look similar to: | ||
< | <syntaxhighlight lang=console> | ||
$ pdflatex minimal.tex | $ pdflatex minimal.tex | ||
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2019/NixOS.org) | This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2019/NixOS.org) | ||
Line 45: | Line 47: | ||
Output written on minimal.pdf (1 page, 12502 bytes). | Output written on minimal.pdf (1 page, 12502 bytes). | ||
Transcript written on minimal.log. | Transcript written on minimal.log. | ||
</ | </syntaxhighlight> | ||
Well done, you created your first PDF document on Nixos using TeX. | Well done, you created your first PDF document on Nixos using TeX. | ||
== Next steps == | |||
From here on, we will assume that the "Full" scheme is installed. | |||
Let's fetch an a little more complex example: | |||
<code>curl -O https://raw.githubusercontent.com/latex3/latex2e/master/base/sample2e.tex</code> | |||
and process it | |||
<code>pdflatex sample2e</code> | |||
You can then use any PDF viewer to display it, e.g. <code>evince</code> in GNOME, <code>okular</code> in KDE, <code>xpdf</code> or <code>zathura</code> lightweight X11-viewer. | |||
=== Using Texlive packages === | |||
If you need many different packages or find that you are missing packages, consider to install the | If you need many different packages or find that you are missing packages, consider to install the | ||
package '''nixpkgs.texlive.combined.scheme-full''', but be aware that it is pretty huge (1- | package '''nixpkgs.texlive.combined.scheme-full''', but be aware that it is pretty huge (about 5 GB). | ||
If you don't want to install the Full scheme, but still need a collection of specific packages, follow the instructions on the [[TexLive]] page. | |||
=== Using CTAN packages === | |||
If you want to use a CTAN-package that is not in TeXLive, you will have to adapt any of the | |||
derivations that you can find in these issues, e.g. [https://github.com/NixOS/nixpkgs/issues/21334] (eqexam) or | |||
or [https://github.com/NixOS/nixpkgs/issues/21577] (classico) | |||
or [https://github.com/NixOS/nixpkgs/issues/54451] (res). Please note that the most common reason | |||
why packages are not in TeXLive is that they might be released under a non-free license. | |||
=== Using home-made packages === | |||
You might want to review [https://github.com/NixOS/nixpkgs/issues/17748] | |||
=== Removing packages from a collection === | |||
If you want to package and install a fresher version of some TeXLive package, you might experience a collision with a package from a scheme or a collection you have installed as a whole. To resolve this issue, remove the package by pname from pkgs. | |||
Example code: | |||
<syntaxhighlight lang=nix> | |||
pkgs.texlive.combine { | |||
scheme-medium = pkgs.texlive.scheme-medium // { | |||
pkgs = pkgs.lib.filter | |||
(x: (x.pname != "apxproof")) | |||
pkgs.texlive.scheme-medium.pkgs; | |||
}; | |||
apxproof = { pkgs = [(pkgs.runCommand "apxproof" { | |||
src = pkgs.fetchurl { | |||
url = "https://raw.githubusercontent.com/PierreSenellart/apxproof/1ac14c47b8351b693ca05eec73dca1332a517ac9/apxproof.sty"; | |||
sha256 = "sha256-XSgtXsOwhMu2Wo4hVp8ZfaPWgjEEg3EBn5/BhD3xkMA="; | |||
}; | |||
passthru = { | |||
pname = "apxproof"; | |||
version = "1.2.3"; | |||
tlType = "run"; | |||
}; | |||
} | |||
" | |||
mkdir -p $out/tex/latex/apxproof/ | |||
cp $src $out/tex/latex/apxproof/apxproof.sty | |||
")]; }; | |||
} | |||
</syntaxhighlight> | |||
== Frequently asked questions FAQ == | |||
''How do I figure out which Texlive-schema to install?'' | |||
As noted on [[TexLive]] there are several schemas available. If you know exactly which packages you are going to need you can follow the recipe on the [[TexLive]] page. Installing the Full-schema is always an option to be sure that you have everything you need, like so: | |||
<code>nix-env -iA nixpkgs.texlive.combined.scheme-full</code> | |||
If you are looking for a smaller package, you need to go the [https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/tools/typesetting/tex/texlive/pkgs.nix Nixpkg's package specification] and search for the scheme-name. For each scheme the list of packages is listed there. Since the inclusion of packages is organized hierarchically, this will require some digging. (TODO: Is there a nix-command to find out?) | |||
[[Category:Languages]] |