Is there an easy way to create a list of all external files (complete path) which are used by a LaTeX document (and its "sub-documents") by
\input
\include
\includegraphics
?
(may I have forgotten some input sources?)
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityThe snapshot package gives you a list of the external dependencies of a LaTeX document. Use it by saying
\RequirePackage{snapshot}
before the \documentclass
command (to have the information written to a .dep
file), or by saying
\RequirePackage[log]{snapshot}
before the \documentclass
command (to have the information written to the .log
file).
.tex
files during a build using \usepackage{embedfile}
and \embedfile{<...>.tex}
...
use the perl script mkjobtexmf
available with every TeX distribution and run it like
mkjobtexmf --jobname <latex file> --cmd-tex pdflatex
it creates an file <latex file>.fls
which shows all used files, e.g. for a testfile named latex6:
PWD /home/voss/Documents
INPUT /usr/local/texlive/2011/texmf.cnf
INPUT /usr/local/texlive/2011/texmf/web2c/texmf.cnf
INPUT /usr/local/texlive/2011/texmf-var/web2c/pdftex/latex.fmt
INPUT latex6.tex
OUTPUT latex6.log
INPUT /usr/local/texlive/2011/texmf-dist/tex/latex/base/article.cls
INPUT /usr/local/texlive/2011/texmf-dist/tex/latex/base/article.cls
INPUT /usr/local/texlive/2011/texmf-dist/tex/latex/base/size10.clo
INPUT /usr/local/texlive/2011/texmf-dist/tex/latex/base/size10.clo
[ ... ]
pdflatex -recorder <latex-file>
to get the same effect. This is what mkjobtexmf
does behind the scenes.
Jul 31, 2011 at 20:42
-recorder
can do.
-recorder
works better than mkjobtexmf
when it comes to pgf plots. With -recorder
you also get the input files used by pgf for the plots, whereas you dont with mkjobtexmf
This is a modified version of the @Gonzales answer with an additional python
code to copy the figures to a new folder.
After using snapshot
package to generate the .dep
file:
\RequirePackage{snapshot}
\documentclass{article}
use the following python
code (say copy_figs.py
) to copy the figures to a separate folder (for example, figs_used
):
"""Copy figures used by document."""
import os
import shutil
DEP_FILE = 'main.dep'
TARGET_DIR = 'other_img/'
EXTENSIONS = ['pdf', 'pdf_tex', 'png']
def copy_image_files():
with open(DEP_FILE, 'r') as f:
for line in f:
if '*{file}' not in line:
continue
value = line.split('{')[2].split('}')
source = value[0]
_, e = os.path.splitext(source)
e = e.lower()[1:]
if e not in EXTENSIONS:
continue
print(source)
shutil.copy(source, TARGET_DIR)
if __name__ == '__main__':
copy_image_files()
To run the python
code:
c:\Python27\python.exe copy_figs.py
in the folder where the Latex file is placed. It is assumed the original figures are in figs
subfolder, and those figures used in the Latex file are copied to figs_used
subfolder. The code copies .png
and .pdf
figure files.
if '*{file}' not in line:
.
or re.search(r'\.code\.tex',source) or source=="xkeyval.tex"
to the last if statement of the function and tex
obviously to the extensions. Edited it also for my other needs, full code can be accessed here gist.github.com/samuelsaari/99f3ffe35a63482698571d713e9ee594
Jul 1, 2022 at 11:03
If you put \listfiles
as the very first line of the master file, the name of every used file is dumped to standard output, including style and font definition files. This is plain old LaTeX.
latexmk
does a good job with this:
latexmk -deps main.tex
It prints everything: other .tex
files, .bib
files, .sty
files, graphics.
Here is a quick-and-dirty implementation of a different approach, that does not require modifications of the source code, nor even recompilation. It just parses the log file, and needs a Unix-like command-line. Just run the following command from a terminal:
~ egrep -o '\./[^>) ]*' document.log
Caveats:
.log
file (not very trivial, though). You can also usestrace
or similar tool (but this one counts as hardcore).dateiliste
package includes a list of TeX files parsed in the document, but without complete path. (And not files used by includegraphics or similar.)