From: "Ludovic Courtès" <ludo@gnu.org>
To: 54220@debbugs.gnu.org
Cc: "Ludovic Courtès" <ludo@gnu.org>,
"Ricardo Wurmus" <rekado@elephly.net>,
"Nicolas Goaziou" <mail@nicolasgoaziou.fr>,
"Thiago Jung Bauermann" <bauermann@kolabnow.com>
Subject: [bug#54220] [PATCH] doc: Add "Using TeX and LaTeX" chapter.
Date: Wed, 2 Mar 2022 10:55:50 +0100 [thread overview]
Message-ID: <20220302095550.17700-1-ludo@gnu.org> (raw)
* doc/guix.texi (Using TeX and LaTeX): New node.
---
doc/guix.texi | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 141 insertions(+)
Hello!
This patch documents the current state of TeX/LaTeX packaging and tips
and tricks to get things done with the modular package set.
I’m writing this as an eternal TeX/LaTeX newbie (and as a Lout refugee!)
not completely familiar with the intricacies of TeX Live packaging, so
this section might need corrections and improvements.
It’s a top-level chapter, because I couldn’t find any better place, but
I think it’s fine.
Thoughts?
Ludo’.
diff --git a/doc/guix.texi b/doc/guix.texi
index 1e8b23ad7e..1c11cc8d5a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -175,6 +175,7 @@ Weblate} (@pxref{Translating Guix}).
* Home Configuration:: Configuring the home environment.
* Documentation:: Browsing software user manuals.
* Installing Debugging Files:: Feeding the debugger.
+* Using TeX and LaTeX:: Typesetting.
* Security Updates:: Deploying security fixes quickly.
* Bootstrapping:: GNU/Linux built from scratch.
* Porting:: Targeting another platform or kernel.
@@ -38622,6 +38623,146 @@ Note that there can be packages for which @option{--with-debug-info}
will not have the desired effect. @xref{Package Transformation Options,
@option{--with-debug-info}}, for more information.
+@node Using TeX and LaTeX
+@chapter Using @TeX{} and @LaTeX{}
+
+@cindex @TeX{} packages
+@cindex @LaTeX{} packages
+Guix provides packages for the @TeX{} and @LaTeX{} typesetting systems,
+taken from the @uref{https://www.tug.org/texlive/, @TeX{} Live
+distribution}. However, because @TeX{} Live is so huge and because
+finding your way in this maze is tricky, we thought that you, dear user,
+would welcome guidance on how to deploy the relevant packages so you can
+compile your @TeX{} and @LaTeX{} documents.
+
+@TeX{} Live currently comes in two flavors in Guix:
+
+@itemize
+@item
+The ``monolithic'' @code{texlive} package: it comes with @emph{every
+single @TeX{} Live package} (more than 7,000 of them), but it is huge
+(more than 4@tie{}GiB for a single package!).
+
+@item
+The ``modular'' @code{texlive-} packages: you install
+@code{texlive-base}, which provides core functionality and the main
+commands---@command{pdflatex}, @command{dvips}, @command{luatex},
+@command{mf}, etc.---together with individual packages that provide just
+the features you need---@code{texlive-latex-listings} for the
+@code{listings} package, @code{texlive-hyperref} for @code{hyperref},
+@code{texlive-beamer} for Beamer, @code{texlive-latex-pgf} for PGF/TikZ,
+and so on.
+@end itemize
+
+We recommend using the modular package set because it is much less
+resource-hungry. To build your documents, you would use commands such
+as:
+
+@example
+guix shell texlive-base texlive-latex-wrapfig \
+ texlive-hyperref texlive-cm-super -- pdflatex doc.tex
+@end example
+
+You can quickly end up with unreasonably long command lines though. The
+solution is to instead write a manifest, for example like this one:
+
+@lisp
+(specifications->manifest
+ '("rubber"
+
+ "texlive-base"
+ "texlive-latex-wrapfig"
+
+ "texlive-microtype"
+ "texlive-latex-listings" "texlive-hyperref"
+
+ ;; PGF/TikZ
+ "texlive-latex-pgf"
+
+ ;; Additional fonts.
+ "texlive-cm-super" "texlive-amsfonts"
+ "texlive-times" "texlive-helvetic" "texlive-courier"))
+@end lisp
+
+You can then pass it to any command with the @option{-m} option:
+
+@example
+guix shell -m manifest.scm -- pdflatex doc.tex
+@end example
+
+@xref{Invoking guix package, @option{--manifest}}, for more on
+manifests. In the future, we plan to provide packages for @TeX{} Live
+@dfn{collections}---``meta-packages'' such as @code{fontsrecommended},
+@code{humanities}, or @code{langarabic} that provide the set of packages
+needed in this particular domain. That will allow you to list fewer
+packages.
+
+The main difficulty here is that using the modular package set forces
+you to select precisely the packages that you need. You can use
+@command{guix search}, but finding the right package can prove to be
+tedious. When a package is missing, @command{pdflatex} and similar
+commands fail with an obscure message along the lines of:
+
+@example
+doc.tex: File `tikz.sty' not found.
+doc.tex:7: Emergency stop.
+@end example
+
+@noindent
+or, for a missing font:
+
+@example
+kpathsea: Running mktexmf phvr7t
+! I can't find file `phvr7t'.
+@end example
+
+How do you determine what the missing package is? In the first case,
+you'll find the answer by running:
+
+@example
+$ guix search texlive tikz
+name: texlive-latex-pgf
+version: 59745
+@dots{}
+@end example
+
+In the second case, @command{guix search} turns up nothing. Instead,
+you can search the @TeX{} Live package database using the @command{tlmgr}
+command:
+
+@example
+$ guix shell texlive-base -- tlmgr info phvr7t
+tlmgr: cannot find package phvr7t, searching for other matches:
+
+Packages containing `phvr7t' in their title/description:
+
+Packages containing files matching `phvr7t':
+helvetic:
+ texmf-dist/fonts/tfm/adobe/helvetic/phvr7t.tfm
+ texmf-dist/fonts/tfm/adobe/helvetic/phvr7tn.tfm
+ texmf-dist/fonts/vf/adobe/helvetic/phvr7t.vf
+ texmf-dist/fonts/vf/adobe/helvetic/phvr7tn.vf
+tex4ht:
+ texmf-dist/tex4ht/ht-fonts/alias/adobe/helvetic/phvr7t.htf
+@end example
+
+The file is available in the @TeX{} Live @code{helvetic} package, which is
+known in Guix as @code{texlive-helvetic}. Quite a ride, but we found
+it!
+
+There is one important limitation though: Guix currently provides a
+subset of the @TeX{} Live packages. If you stumble upon a missing
+package, you can try and import it (@pxref{Invoking guix import}):
+
+@example
+guix import texlive @var{package}
+@end example
+
+@quotation Note
+@TeX{} Live packaging is still very much work in progress, but you can
+help! @xref{Contributing}, for more information.
+@end quotation
+
@node Security Updates
@chapter Security Updates
base-commit: a53ea46bfc219a2c184fbf3ce8f3e3ba3f539a7d
--
2.34.0
next reply other threads:[~2022-03-02 9:57 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-02 9:55 Ludovic Courtès [this message]
2022-03-02 10:12 ` [bug#54220] [PATCH] doc: Add "Using TeX and LaTeX" chapter Ricardo Wurmus
2022-03-02 11:40 ` Ludovic Courtès
2022-03-02 12:11 ` Ricardo Wurmus
2022-03-02 13:45 ` zimoun
2022-03-02 18:28 ` bug#54220: " Ludovic Courtès
2022-03-02 13:42 ` [bug#54220] " zimoun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220302095550.17700-1-ludo@gnu.org \
--to=ludo@gnu.org \
--cc=54220@debbugs.gnu.org \
--cc=bauermann@kolabnow.com \
--cc=mail@nicolasgoaziou.fr \
--cc=rekado@elephly.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).