“独立” TikZ 图片

“独立” TikZ 图片

我想在外部 PDF 文件中创建 TikZ 图片,然后可以通过 将其包含在我的主文档中\includegraphics。但是,编译包含 TikZ 图片的文档会产生整整一页,这意味着有很多空白。

我想要做的事情可以使用预览包来完成,如下所述使用 TikZ 的独立图表?,在 SO 上。但是预览包和 XeTex 存在一些问题(请参阅tikz、预览包和 xelatex 中的透明度)。

由于创建独立图片似乎是一件很自然的事情,我希望有一个不同的、也许更优雅的解决方案。

答案1

您可以使用standalone类。在 v0.x 中,它是preview内部使用的,但对于 v1.x,它还有一个替代crop选项,其工作原理类似于preview选项/包,但避免了与 XeTeX 相关的问题。

现在 (v1.0) 还有一个tikz类选项,可以将任何 (外部)tikzpicture变成单个紧密页面。这可以避免尾随隐式段落的问题。此外,它还会自动加载包tikz

% tikzpic.tex
\documentclass[crop,tikz]{standalone}% 'crop' is the default for v1.0, before it was 'preview'
%\usetikzlibrary{...}% tikz package already loaded by 'tikz' option
\begin{document}
\begin{tikzpicture}
  \draw (0,0) -- (10,10); % ...
\end{tikzpicture}
\end{document}

然后像平常一样用pdflatexxelatex等进行编译。

要将其包含tikzpicture到主文档中,请加载standalone 包裹在那里使用选项mode=buildnew。然后使用\includestandalone[<options>]{<filename>}而不是\includegraphics。这将自动将所有包含的独立文件编译为图形,如果源文件比现有图形文件新,则构建这些图形。需要-shell-escape启用此功能以允许主 LaTeX 运行调用其他 LaTeX 编译器。standalone有关更多详细信息,请参阅手册。

% main.tex
% compile with `pdflatex -shell-escape main` or `xelatex  -shell-escape main`
\documentclass{article}
\usepackage[mode=buildnew]{standalone}% requires -shell-escape
\usepackage{tikz}
%\usetikzlibrary{...}
\begin{document}
Lorem ipsum ...

\includestandalone[width=.8\textwidth]{tikzpic}

Lorem ipsum ...
\end{document}

答案2

我最终external library按照 diabonas 的建议使用了 。

以下是 XeTeX 的一个例子:

\documentclass{article}

\usepackage{fontspec}
    \setmainfont[Mapping=tex-text]{Linux Libertine O}

\usepackage{tikz}
    \definecolor{blue}{cmyk}{1,1,0,0.07}

\usetikzlibrary{external}
\tikzexternalize
\tikzset{external/system call={xelatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}
\tikzset{external/force remake=true} 

\begin{document}

\tikzstyle{place}=[circle,draw=blue,fill=blue!20,line width=2pt]

\begin{tikzpicture}
    \node at (0,0) [place] {Ti\textit{k}Z};
\end{tikzpicture}

\end{document}

必须使用 进行编译-shellescape

一个小小的不便是,适当裁剪的文件被命名为<filename>-figure0

答案3

pdfcrop也许将标准文章类别和/或裁剪设施结合起来adjustbox会是一个解决办法。

article因此,例如,您使用类将图片制作成单独的文件。然后,您使用包clipbox中的adjustbox图片剪辑\includegraphics到您真正想要的部分...

相关内容