graphics

.gif 파일이 지원되지 않는 이유

이것은 내가 잠시 동안 스스로에게 던졌던 질문이고 나는 답을 찾지 못했습니다.

라이센스 문제 때문입니까? 파일 형식 때문에? 다른 이유가 있나요?

반대를 증명하기 위해: GIF를 직접 임베딩하는 것이 가능합니다. 물론 PDF는 아니지만 아직 SVG 출력입니다.

경계 상자 정보가 포함된 사용자 제공 <img file base name>.xbb 파일을 사용하여 GIF(정적/애니메이션)를 다른 비트맵 형식(PNG 및 JPEG 제외)으로 처리 하는 graphicx 규칙 을 추가하기만 하면 됩니다.

\DeclareGraphicsRule{.gif}{bitmap}{.xbb}{}

480px * 360px 이미지의 경우 xbb 파일의 내용은 다음과 같습니다 .

%%BoundingBox: 0 0 480 360

SVG 출력에 GIF 데이터를 인라인하려면 GIF 파일은 base64로 인코딩되어야 합니다. 패키지 media4svg 는 비트맵( \Ginclude graphicx 에 대한 그래픽x 드라이버 코드 를 수정하는 데 사용하는 명령을 제공합니다 .


(pkg media4svg , v0.9 2022-08-12 필요)

아래에 나열된 example.tex 조판

dvilualatex example
dvisvgm --zoom=-1 --bbox=papersize --font-format=woff2 예

or

latex --shell-escape example
dvisvgm --zoom=-1 --bbox=papersize --font-format=woff2 예

or even

xelatex --shell-escape --no-pdf 예제
dvisvgm --zoom=-1 --bbox=papersize --font-format=woff2 example.xdv

NB Firefox는 웹 페이지(예: TeX.SX)에 자체적으로 포함된 SVG에 포함된 애니메이션 GIF를 재생하지 못합니다. 버그처럼 보입니다. 대신 Chromium, Chrome, Opera 또는 Edge와 같은 Blink 기반 웹 브라우저를 사용하십시오. 또는 이미지를 (오른쪽) 클릭하여 자체 브라우저 탭에서 SVG를 엽니다.


입력 파일 example.tex .

( https://upload.wikimedia.org/wikipedia/commons/d/d3/Newtons_cradle_animation_book_2.gif 에서 GIF 다운로드 )

\documentclass[dvisvgm]{article}

% download `Newtons_cradle_animation_book_2.gif' before typesetting:
%
% https://upload.wikimedia.org/wikipedia/commons/d/d3/Newtons_cradle_animation_book_2.gif

\usepackage[a6paper]{geometry}
\usepackage{graphicx}
\DeclareGraphicsRule{.gif}{bitmap}{.xbb}{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% provide BoundingBox information in a separate .xbb file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{filecontents}[overwrite,noheader]{Newtons_cradle_animation_book_2.xbb}
%%BoundingBox: 0 0 480 360
\end{filecontents}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% patch graphics backend driver `dvisvgm.def' to physically embed
% bitmaps into DVI
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatletter
\let\Ginclude\Ginclude
\def\Ginclude#1{%
  \baseSixtyFour{#1}{72}{{?nl}}\bitmap%
  \Ginclude{%
    data:image/\expandafter\remove\Gin;;base64,{?nl}%
    \bitmap}%
}
\def\remove.#1;{#1}
\makeatother

\RequirePackage{media4svg} % provides base64-encode utility
\ExplSyntaxOn
\cs_new:Npn\baseSixtyFour#1#2#3#4{
  \sys_if_engine_luatex:TF{
    \xdef#4{\directlua{media4svg.base64("#1",#2,"#3")}}
  }{
    \msvg_convert_file_to_blob:nnnN{#1}{#2}{#3}#4
  }
}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\section{Animated GIF}
\noindent\includegraphics[width=\linewidth]{Newtons_cradle_animation_book_2.gif}

\end{document}



지원 이미지 형식에 대한 논의가 포함된 1996년 TUGboat (Keith Reckdahl 작성) 기사가 있습니다. 이 기사는 Volume 17 No. 1 에서 가져온 것으로, Using EPS Graphics in LATEX2ε Documents Part 1 이라고 합니다. dvips 를 중심으로 이루어 지지만 직접 pdf 출력에 대해서도 비슷한 주장을 할 수 있습니다( 이 질문에 대한 David의 설명 참조). 또한 dvips 에서 직접 지원을 구현하지 않는 역사적 관행은 pdflatex 및 이후 컴파일러 에 대한 선택에 영향을 미쳤을 수 있습니다 .

인용(52-53페이지):

10.3 비 EPS 그래픽 파일 포함

LATEX 문서에 EPS 그래픽을 삽입하는 것은 쉽지만 비 EPS 그래픽(GIF, TIFF, JPEG, PICT 등)을 삽입하는 것은 간단하지 않습니다.

[...]

10.3.1 비 EPS 그래픽에 대한 직접 지원

LATEX 및 dvips가 EPS 파일을 삽입하는 것처럼 쉽게 비 EPS 그래픽 형식을 직접 포함하도록 지원해야 한다는 요청이 종종 있습니다. 이것이 편리할 수 있지만 불행히도 일을 복잡하게 만드는 몇 가지 문제가 있습니다.

예를 들어, 대부분의 비 EPS 그래픽 형식은 TEX에서 읽을 수 없는 바이너리 파일을 사용하므로 LATEX에서 비 EPS 그래픽의 크기를 결정할 수 없습니다. 또한 비 EPS 그래픽을 지원하려면 그래픽 변환 기능(GIF-PS, TIFF-PS 등)을 통합하기 위해 dvips도 필요합니다. 이것은 많은 프로그래밍을 필요로 할 뿐만 아니라 미래에 더 많은 유지 관리가 필요할 것입니다.

그래픽 변환 루틴을 직접 통합하는 대신 dvips는 외부 변환 프로그램을 호출하는 메커니즘을 제공합니다. 이 메커니즘은 \DeclareGraphicsRule의 명령 인수를 사용하여 LATEX에서 액세스할 수 있습니다. 이것은 직접 지원보다 더 유연하다는 이점이 있으며, DVI에서 PS로의 변환에서 그래픽 변환이 분리되어 있기 때문에 사용자는 자신의 그래픽 변환 프로그램을 자유롭게 선택할 수 있습니다.

또 다른 흥미로운 역사적 접근 방식은 1991년 기사 에 설명되어 있습니다 . 여기서 GIF 형식의 사진은 LaTeX 문서에 직접 포함하기 위해 글꼴(!)로 변환됩니다.