# Create list of all external files used by master LaTeX document?

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?)

-
You can parse the `.log` file (not very trivial, though). You can also use `strace` or similar tool (but this one counts as hardcore). –  Andrey Vihrov Jul 31 '11 at 13:19
My `dateiliste` package includes a list of TeX files parsed in the document, but without complete path. (And not files used by includegraphics or similar.) –  Paŭlo Ebermann Jul 31 '11 at 14:22

The 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).

-
Is there any way to use this information during the LaTeX build? I am trying to include all the distributed `.tex` files during a build using `\usepackage{embedfile}` and `\embedfile{<...>.tex}`... –  fgysin Feb 28 '13 at 8:38

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
[ ... ]
``````
-
Or you can simply run `pdflatex -recorder <latex-file>` to get the same effect. This is what `mkjobtexmf` does behind the scenes. –  Lev Bishop Jul 31 '11 at 20:42
sure, what else should it do? However, you can create a texmf tree depending to the job which is more what `-recorder` can do. –  Herbert Jul 31 '11 at 21:00
the `-recorder` option is great ! –  Suresh Jul 31 '11 at 21:55

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`):

``````import os
import shutil

lines = open('./My_Latex_File.dep', 'r')
for n, line in enumerate(lines):
if '*{file}' in line:
if ('.png' in line) or ('.pdf' in line):
value = line.split("{")[2].split("}")
print value[0]
shutil.copy('./' + value[0], 'figs_used/')
``````

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.

-