Eu tenho um documento TeX que incorpora uma grande quantidade de figuras de uma fig
pasta que está cheia de outra quantidade enorme de outras figuras.
Gostaria de mover o documento junto com suas figuras, mas não quero levar a fig
pasta inteira, apenas as figuras que estão embutidas no documento.
Existe algum pacote (ou alguma outra forma) que me permita, por exemplo, imprimir os nomes dos arquivos de todas as figuras incorporadas no documento? Algo como:
fig/figurename1.eps
fig/figurename2.eps
...
etc
Eu poderia então simplesmente copiar e colar essa lista e adicionar alguns cp
em um arquivo de texto simples e automatizar a cópia desses arquivos para o local desejado, executando o arquivo em meu shell:
$ cp fig/figurename1.eps wherever/fig/
$ cp fig/figurename2.eps wherever/fig/
...
etc
Claro que isso é apenas uma ideia, se alguém tiver uma alternativa para "listagem de arquivos e copiar e colar em um arquivo shell", ficaria feliz em ouvir =)
Responder1
Você pode modificar a \includegraphcs
macro para adicioná-la a uma lista e imprimir a lista no final do documento. O MWE abaixo produz a seguinte saída:
Figures included were
images/figA.jpg
images/figB.png
Notas:
Neste caso
\let
também teria funcionado (conforme comentário de egreg emRedimensione todas as imagens em Latex para uma largura percentual), mas me acostumei a usar\LetLtxMacro
fromoletltxmacro
pacotepara macros que possuem parâmetros opcionais. Uma descrição detalhada\LetLtxMacro
pode ser encontrada nesta pergunta sobre umsímbolo de raiz quadrada fechada.A
[demo]
opção é utilizada para colocar uma caixa preta onde a figura iria para fins de demonstração, no seu uso real (quando você realmente tem as figuras disponíveis), você precisa remover esta opção.Se você quiser, você pode usar
\immediate\write18
e executar ocp
comando shell dentro do\foreach
loop e ter um diretório no final da composição que contém as imagens que foram incluídas. Nenhum processamento adicional seria necessário.
Código:
\documentclass{article}
\usepackage[demo]{graphicx}% Remove [demo] option in real usage.
\usepackage{letltxmacro}
\usepackage{pgffor}
%% https://tex.stackexchange.com/questions/14393/how-keep-a-running-list-of-strings-and-then-process-them-one-at-a-time
\newcommand\FigList{}
\newcommand\AddFigToList[1]{\edef\FigList{\FigList#1,}}
\LetLtxMacro{\OldIncludegraphics}{\includegraphics}
\renewcommand{\includegraphics}[2][]{%
\AddFigToList{#2}%
\OldIncludegraphics[#1]{#2}%
}
\newcommand*{\ShowListOfFigures}{%
\typeout{Figures included were}%
\foreach \x in \FigList {%
%\par\x% <-- uncomment if you want the list in the PDF as well
\typeout{ \x}
}%
}
\AtEndDocument{\ShowListOfFigures}
\begin{document}
\includegraphics{images/figA.jpg}
\includegraphics{images/figB.png}
\end{document}
Responder2
pdflatex
fornece o sinalizador -recorder
que grava um .fls
arquivo. Tudo o que está marcado INPUT
ali são arquivos que foram abertos durante o processamento.
latexmk
usa a bandeira -deps
ou -deps-out=FILENAME
para mostrar as decências e no último caso também armazena-as em um make
arquivo FILENAME
.
Responder3
No Linux, algo assim servirá, sem modificar a fonte:
strace -fe open make 2>&1 1>/dev/null | grep plots | sed 's/.*\"\(.*\)\".*/\1/' > plots.list
Onde :
make
é o comando que você usa para construir sua saída (pode ser alguma variação depdflatex file.tex
).strace
exibe as syscalls. Com as opções que estamos disponibilizando, mantemos apenas as syscalls (-e
opção) "abertas" para obter as figuras que estão inseridas (bem como outros arquivos abertos agora). A-f
opção é exibir syscalls de subprocessos e os redirecionamentos são para manter apenas a saída do strace.grep plots
seleciona as linhas que contêm uma string comum no caminho ("plotagens" neste caso).sed
seleciona o que está dentro das aspas.O redirecionamento final despeja o resultado em um arquivo.
Você pode obter nomes de arquivos duplicados dessa maneira, mas pode ser bom o suficiente dependendo do que você deseja.
Responder4
Existe um perl
script no CTAN,texdependeque faz tudo isso e muito mais. Ele lida com todos os tipos de dependências internas e externas e pode gerar as informações no formato Makefile
, perl
ou 1 por linha.
>texdepend
Find LaTex dependencies, Version: 0.96, Michael Friendly ([email protected])
Usage: C:\batchfiles\texdepend.pl <options> texfile[.tex]
where <options> may be abbreviated to unique truncations, and are:
-help print this measly help
-expand expand package/include file to full path names
-format = make print dependencies in Makefile format
perl print in the form of perl assignments (LatexMk)
1 print one per line (with # separators)
-ignore = list list of file types to be ignored in .log [default: fd]
-out = filename send output to filename
-print = Any one or more of i (includes) p (packages)
f (figs) b (bibfiles) s (styles) d (all dependencies)
-styles = list list of file types for from .log [default: sty]
-verbose