Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Latex: Extracting the sty files of all the used packages

Tags:

package

latex

So after writing a large .tex file and using many packages I want to archive everything, not just the .tex .jpg files, but also the .sty files.

This is because sometimes some options in the sty files are changed, and then I can't compile the file.

The "problem" is that in using Ubuntu, I already installed all the packages in my system. I don't want to have to copy them manually. Is there a program that can do this automatically?

Thanks.

like image 953
Zlatko Avatar asked Feb 28 '23 01:02

Zlatko


2 Answers

See https://texfaq.org/FAQ-filesused, quote:

All the files used by this document When you’re sharing a document with someone else (perhaps as part of a co-development cycle) it’s as well to arrange that both correspondents have the same set of auxiliary files, as well as the document in question. Your correspondent obviously needs the same set of files (if you use the url package, she has to have url too, for example). But suppose you have a bug-free version of the shinynew package but her copy is still the unstable original; until you both realise what is happening, such a situation can be very confusing.

The simplest solution is the LaTeX \listfiles command. This places a list of the files used and their version numbers in the log file. If you extract that list and transmit it with your file, it can be used as a check-list in case that problems arise.

Note that \listfiles only registers things that are input by the “standard” LaTeX mechanisms (\documentclass, \usepackage, \include, \includegraphics and so on). The \input command, as modified by LaTeX and used, with LaTeX syntax, as:

\input{mymacros}

records file details for mymacros.tex, but if you use TeX primitive syntax for \input, as:

\input mymacros

mymacros.tex won’t be recorded, and so won’t listed by \listfiles — you’ve bypassed the mechanism that records its use.

The snapshot package helps the owner of a LaTeX document obtain a list of the external dependencies of the document, in a form that can be embedded at the top of the document. The intended use of the package is the creation of archival copies of documents, but it has application in document exchange situations too.

The bundledoc system uses the snapshot to produce an archive (e.g., tar.gz or zip) of the files needed by your document; it comes with configuration files for use with TeX Live-Unix and MiKTeX. It’s plainly useful when you’re sending the first copy of a document.

The mkjobtexmf finds which files are used in a “job”, either via the -recorder option of TeX, or by using the (Unix) command strace to keep an eye on what TeX is doing. The files thus found are copied (or linked) to a directory which may then be saved for transmission or archiving.

like image 150
lhf Avatar answered Mar 07 '23 12:03

lhf


Latex logfiles indicate all files loaded as follows:

  1. Files specified using absolute paths are shown (\$PATH followed by whitespace (a space or a newline; I think Tex forbids whitespace in paths, certainly paths with whitespace are a pairn to pass to \input);
  2. Local paths are the same except they have a dot: (.\$PATH followed by whitespace
  3. Fonts are shown within <...>.

You can easily scrape these filenames out of the .log file.

like image 22
Charles Stewart Avatar answered Mar 07 '23 11:03

Charles Stewart