KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
Don't be overly suspicious where it's not warranted.
FrontPage › PDF그림포함하기/Obsolete
TeXLive 2008 이후로 적용되지 않는 설명. 보존을 위한 페이지입니다.

dvipdfm 옵션으로 그림을 로드하는 경우

Windows용 MiKTeX에서는 예컨대 다음과 같은 코드

\usepackage{graphicx}    % [dvipdfm] 옵션 없음
\DeclareGraphicsExtensions{.jpg,.png,.pdf}

이것만으로도 DVIPDFMx로 하여금 .bb가 있는 JPG, PNG, PDF를 잘 처리하게 할 수 있습니다. 그런데 teTeX에서는 이것이 잘 먹지 않고 .bb가 없다는 에러를 내는 경우를 만난 적이 있을 것입니다.

호환성을 위해서 다음과 같이 해주면 좋을 것 같습니다.

\usepackage{graphicx}
\DeclareGraphicsExtensions{.jpg,.png,.pdf}
\DeclareGraphicsRule{.pdf}{eps}{.bb}{}
\DeclareGraphicsRule{.png}{eps}{.bb}{} 
\DeclareGraphicsRule{.jpg}{eps}{.bb}{} 

제 경험으로 DVIPDFMx를 목적 DVI드라이버로 할 때 jpg/pdf를 처리하는 코 드로는 이것이 최상인 것 같습니다.

ebb

DVIPDFMx에서 jpg, png, pdf 그림을 넣으려면 bb 파일이 있어야 한다. bb 파일 만들 때 DVIPDFm 유틸리티인 ebb를 쓰면 편리하다. 이 유틸리티로는 jpg, png, pdf 그림의 bb를 얻을 수 있다.

/!\ MiKTeX의 ebb는 pdf의 버전이 1.4 이상이면 동작하지 않는다. 그러나 KC2006의 ebb는 그러한 문제가 없다. 이 페이지는 KC2006(W32TeX/ko) 또는 KC2007(TeXLive 2007)에 포함된 ebb의 사용법만을 기술한다.
  • Linux/Mac에서는 TeXLive 2007에서도 같은 문제를 겪을 수 있으나, 이를 대용할 xbb 유틸리티가 있다.
  • MiKTeX 2.6은 xbb도 없고 ebb도 예전 방식으로 동작하므로, 사실상 pdf 1.4 이상 그림에 대해서는 ebb를 이용한 대책이 없다.

사용법은 다음과 같다.
#> ebb foo.jpg

명령행에서 루프 돌리면 쉽게 모든 그림 파일의 *.bb 파일을 얻을 수 있다.
#> for /L %i in (*.jpg) do ebb %i

KC2006의 ebb를 사용할 경우, 간단하게 다음과 같이 해도 여러 개의 bb를 한꺼번에 얻을 수 있다. (MiKTeX 버전은 이 기능이 없음)
#> ebb *.pdf

xbb : an extension of ebb

ChoF 님께서 ebb의 몇 가지 문제점을 수정하여 확장한 ebb.
  • dvipdfmx 프로젝트의 일부임. dvipdfmx를 컴파일하면 바이너리를 얻을 수 있다.
  • Windows 실행 파일은 W32TeXKC2006, KC2007 에서 배포됨
  • Intel Mac 바이너리는 [http]dvipdfmx contrib/bin 에서 구할 수 있음.
  • 관련 기사 : KTS
현재 xbb는 texlive 2008에 기본 프로그램으로 (DVIPDFMx의 일부로) 들어 있으며, graphicx 패키지의 dvipdfmx 옵션을 통해 latex 명령 실행과정에서 자동으로 실행된다. extractbb라는 명령으로 호출한다.

ebb 대신 GhostScript를 이용하여 같은 일을 하는 방법.

Windows: getbb.bat (KTUGContrib:2765) by Karnes

pdf와 jpg의 bb를 얻을 수 있는 배치파일. AFPL GhostScript 8.54, GraphicsMagick의 설치가 필수적이다.
@echo off
rem AFPL gs 8.54 및 Graphics Magick 필요.
if !%~x1!==!.jpg! goto JPG
if !%~x1!==!.JPG! goto JPG
if !%~x1!==!.pdf! goto PDF
if !%~x1!==!.PDF! goto PDF
echo Usage: [call] getbb foo.jpg(.pdf) [dpi]
echo no jpg/pdf file specified. exit.
goto FIN

:JPG
echo %~x1
if !%2!==!! goto JPGNODENSITY
gm convert -density %2 %~n1.jpg %~n1.pdf
goto JPGCONVERT
:JPGNODENSITY
gm convert -density 100 %~n1.jpg %~n1.pdf
:JPGCONVERT
gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox -sOutputFile=- %~n1.pdf -c quit 2> %~n1.bb
del /F /Q %~n1.pdf
goto FIN

:PDF
echo %~x1
gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox -sOutputFile=- %~n1.pdf -c quit 2> %~n1.bb
goto FIN

:FIN

사용법은 파일이름만 적어주면 됩니다.

#> getbb foo.jpg

#> getbb bar.pdf

다만 jpg 그림에 대해서는 resolution을 두번째 인자로 줄 수 있습니다.

#> getbb foo.jpg 200

한 디렉토리 내의 모든 JPG 파일에 대해서 .bb를 한꺼번에 얻으려면,

#> for %i in (*.jpg) do call getbb %i


png 파일의 bb는 ebb로 얻으면 됩니다.

Shell Script (by DohyunKim)

pdf의 bb를 얻을 수 있는 셸 스크립트
#!/bin/bash
for A in $*
do
    F=`echo $A | sed -e 's/\.[a-zA-Z]*$//'`
    gs -q -dNOPAUSE -dBATCH -sDEVICE=bbox $A >& $F.bb
done

^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-09-18 14:51:03
Processing time 0.0390 sec