fig
나는 엄청난 양의 다른 그림으로 가득 찬 폴더 에서 엄청난 양의 그림을 포함하는 TeX 문서를 가지고 있습니다 .
문서를 그림과 함께 이동하고 싶지만 폴더 전체를 이동하고 싶지 않고 fig
문서에 포함된 그림만 이동하고 싶습니다.
예를 들어 문서에 포함된 모든 그림의 파일 이름을 인쇄할 수 있는 패키지(또는 다른 방법)가 있습니까? 다음과 같은 것 :
fig/figurename1.eps
fig/figurename2.eps
...
etc
그런 다음 해당 목록을 복사하여 붙여넣고 cp
일반 텍스트 파일에 일부를 추가한 다음 셸에서 파일을 실행하여 해당 파일의 복사본을 원하는 위치에 자동화할 수 있습니다.
$ cp fig/figurename1.eps wherever/fig/
$ cp fig/figurename2.eps wherever/fig/
...
etc
물론 이것은 단지 아이디어일 뿐입니다. 누군가가 "셸 파일에서 파일 목록 및 복사-붙여넣기"에 대한 대안을 가지고 있다면 기꺼이 들어주실 것입니다 =)
답변1
\includegraphcs
매크로를 수정하여 목록에 추가하고 문서 끝에 목록을 인쇄할 수 있습니다 . 아래 MWE는 다음과 같은 결과를 산출합니다.
Figures included were
images/figA.jpg
images/figB.png
노트:
이 경우에도
\let
작업이 있을 것입니다(egreg의 의견에 따라).Latex의 모든 이미지 크기를 백분율 너비로 조정\LetLtxMacro
), 그러나 나는 다음을 사용하는 데 익숙해졌습니다.패키지letltxmacro
선택적 매개변수가 있는 매크로의 경우. 에 대한 자세한 설명은\LetLtxMacro
a에 대한 이 질문에서 찾을 수 있습니다.닫힌 제곱근 기호.이
[demo]
옵션은 데모 목적으로 그림이 배치될 위치에 블랙 박스를 배치하는 데 사용됩니다. 실제 사용 시(실제로 그림을 사용할 수 있는 경우) 이 옵션을 제거해야 합니다.원한다면 루프 내에서 쉘 명령을 사용
\immediate\write18
하고 실행할 수 있으며 조판 끝에 포함된 이미지가 있는 디렉토리를 가질 수 있습니다. 추가 처리가 필요하지 않습니다.cp
\foreach
암호:
\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}
답변2
pdflatex
-recorder
파일을 쓰는 플래그를 제공합니다 .fls
. 거기 표시된 모든 것은 INPUT
처리 중에 열린 파일입니다.
latexmk
플래그를 사용 -deps
하거나 -deps-out=FILENAME
품위를 표시하고 마지막 경우에는 형식이 make
지정된 FILENAME
.
답변3
Linux에서는 소스를 수정하지 않고도 다음과 같은 작업을 수행할 수 있습니다.
strace -fe open make 2>&1 1>/dev/null | grep plots | sed 's/.*\"\(.*\)\".*/\1/' > plots.list
어디 :
make
출력을 작성하는 데 사용하는 명령입니다(의 일부 변형일 수 있음pdflatex file.tex
).strace
syscall을 표시합니다. 우리가 제공하는 옵션을 사용하면-e
삽입된 수치(현재 열려 있는 다른 파일도 포함)를 가져오기 위해 "열린" syscall(옵션)만 유지합니다. 옵션-f
은 하위 프로세스의 syscall을 표시하는 것이며 리디렉션은 strace 출력만 유지하는 것입니다.grep plots
경로에서 공통 문자열을 포함하는 행을 선택합니다(이 경우 "플롯").sed
따옴표 안에 있는 내용을 선택합니다.최종 리디렉션은 결과를 파일에 덤프합니다.
이런 식으로 중복된 파일 이름을 얻을 수 있지만 원하는 것에 따라 충분할 수 있습니다.
답변4
perl
CTAN에는 스크립트 가 있습니다 .텍스펜던트그것은 이 모든 것 이상을 수행합니다. 모든 종류의 내부 및 외부 종속성을 처리하고 정보를 줄당 1개 형식 Makefile
으로 생성할 수 있습니다.perl
>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