
브라우저에 표시하기 위해 PDF를 라텍스 파일에서 SVG로 변환하는 안정적인 방법을 찾고 있습니다.
\documentclass{article}
\pagenumbering{gobble}
\usepackage{blkarray}
\usepackage{xcolor}
\definecolor{darkred}{rgb}{0.55, 0.0, 0.0}
% -----------------------------------------------------------------------------------------------
\begin{document}
\begin{blockarray}{rrrrrrrrrr}
\begin{block}{rrrr(cccc|c)!{\quad}l}
& & & & 1 & 2 & 2 & 1 & 8 & the pivot is in row 2, col 2\\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{$\boxed{1}$}}} & -1 & 0 & 0 & It will be multiplied by\\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{-2}}} & 1 & -2 & -5 & entries in column 1 of $E$ \\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{\ 1}}} & -1 & 1 & 2 & \\
\end{block}
\end{blockarray}
\end{document}
- 나는 작동하지 않는 것을 사용했고
\documentclass{standalone}
결국 페이지 번호를 제거하고 다음과 같은 추악한 쉘 스크립트를 사용했습니다.
!/bin/sh
latexmk -pdflatex $1.tex && \
latexmk -pdflatex -c $1.tex && \
pdf2svg $1.pdf /tmp/temp_$1.svg && \
inkscape -D --without-gui --file=/tmp/temp_$1.svg --export-plain-svg $1.svg
질문
- 이미지가 실제 크기까지 잘리도록 svg를 만드는 더 간단한 방법이 있습니까? (inkscape의 -D 옵션)
- 전체 페이지가 아닌 해당 이미지만 표시하도록 PDF를 만드는 더 간단한 방법이 있습니까?
- 행렬을 묶는 괄호는 대부분의 시도에서 엉망이 됩니다. 파렌이 올바르게 렌더링되도록 하려면 어떻게 해야 합니까?
- pdflatex 대신 xelatex를 사용할 수 있는 솔루션이 있나요?
답변1
유지 관리되지 않는 대신 TeXLive/MiKTeX의 일부이고 적극적으로 유지 관리되는 것을 pdf2svg
사용하겠습니다 .dvisvgm
출력을 눈에 보이는 콘텐츠로 결합 --exact
하고 다듬어 반응형으로 만들어 HTML에 쉽게 삽입할 수 있도록 합니다(옵션 설명)--zoom=-1
여기).
latex input
dvisvgm --exact --zoom=-1 --font-format=woff2 input
\documentclass{article}
\pagestyle{empty}
\usepackage{nicematrix}
\usepackage{blkarray}
\usepackage{xcolor}
\definecolor{darkred}{rgb}{0.55, 0.0, 0.0}
% -----------------------------------------------------------------------------------------------
\begin{document}
\begin{blockarray}{rrrrrrrrrr}
\begin{block}{rrrr(cccc|c)!{\quad}l}
& & & & 1 & 2 & 2 & 1 & 8 & the pivot is in row 2, col 2\\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{$\boxed{1}$}}} & -1 & 0 & 0 & It will be multiplied by\\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{-2}}} & 1 & -2 & -5 & entries in column 1 of $E$ \\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{\ 1}}} & -1 & 1 & 2 & \\
\end{block}
\end{blockarray}
\end{document}
답변2
누락된 amsmath
.
\documentclass{standalone}
\usepackage{amsmath}
\usepackage{blkarray}
\usepackage{xcolor}
\definecolor{darkred}{rgb}{0.55, 0.0, 0.0}
% -----------------------------------------------------------------------------------------------
\begin{document}
\begin{blockarray}{rrrrrrrrrr}
\begin{block}{rrrr(cccc|c)!{\quad}l}
& & & & 1 & 2 & 2 & 1 & 8 & the pivot is in row 2, col 2\\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{$\boxed{1}$}}} & -1 & 0 & 0 & It will be multiplied by\\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{-2}}} & 1 & -2 & -5 & entries in column 1 of $E$ \\
& & & & 0 & {\colorbox{yellow}{\color{darkred}{\ 1}}} & -1 & 1 & 2 & \\
\end{block}
\end{blockarray}
\end{document}
그런 다음 제안한 대로 PDF를 SVG로 컴파일하고 변환합니다.
#!/bin/bash
latexmk -pdflatex $1.tex && \
latexmk -pdflatex -c $1.tex && \
pdf2svg $1.pdf $1.svg
답변3
각 툴체인은 라텍스 엔진, 문서 클래스 및 사용된 패키지에 따라 다양한 상황에서 실패합니다.
tex_program -> svg_converter -> svg_crop
하위 프로세스를 실행하기 위해 Python 호출에 사용할 수 있는 명령 매개변수 목록으로 툴체인을 구축하는 함수의 현재(Python/Linux) 버전을 추가하고 있습니다 . 매개변수는 호출되는 nexec
횟수가 아닙니다 . tex_program
모든 조합에 적용되는 것은 아닙니다...
def build_commands( tex_program=["pdflatex"], svg_converter=[["pdf2svg"],".pdf"], use_xetex=False, use_dvi=False, crop=False, nexec=1):
if isinstance( tex_program, (list,)) is False:
tex_program = [tex_program]
if tex_program[0] == "pdflatex":
if use_xetex is True:
if use_dvi is True:
if nexec > 1:
_tex_program = ["xelatex", "--no-pdf", "-etex" ]
_svg_converter = [["dvisvgm", "--font-format=woff2", "--exact"], ".xdv"]
else:
_tex_program = ["latexmk", "-xelatex", "-etex" ]
_svg_converter = [["dvisvgm", "--font-format=woff2", "--exact"], ".xdv"]
else:
if nexec > 1:
_tex_program = ["xelatex", "-etex" ]
_svg_converter = [["pdf2svg"], ".pdf"]
else:
_tex_program = ["latexmk", "-xelatex", "-etex" ]
_svg_converter = [["pdf2svg"], ".pdf"]
else:
if use_dvi is True:
_tex_program = ["latexmk", "-etex", "-dvi" ]
_svg_converter = [["dvisvgm", "--font-format=woff2", "--exact"], ".dvi"]
else:
_tex_program = ["latexmk", "-etex", "-pdf" ]
_svg_converter = [["pdf2svg"], ".pdf"]
else:
_tex_program = tex_program
_svg_converter = svg_converter
if crop:
_svg_crop = (["inkscape", "-D", "--without-gui", "--file"], ["--export-plain-svg"])
else:
_svg_crop = None
return _tex_program, _svg_converter,_svg_crop
프로그램을 호출하기 위해 다음 줄을 따라 코드를 사용합니다.
tex_program.append( tex_path )
for _ in range(nexec-1):
run_subprocess(tex_program, cwd=working_dir)
check_output(tex_program, cwd=working_dir)
svg_program = svg_converter[0] + [pdf_path, svg_path]
check_output(svg_program, cwd=working_dir)
if svg_crop is not None:
crop_program = svg_crop[0] + [svg_path] + svg_crop[1] + [svg_path]
check_output( crop_program, cwd=working_dir)