tikz、预览包和 xelatex 中的透明度

tikz、预览包和 xelatex 中的透明度

preview使用该包并使用 xelatex 进行编译时,tikz 图片是否可以具有透明度?

以下 mwe 在 xelatex 和 pdflatex 下均可编译,且无警告/错误,但使用 xelatex 时则无透明度。所有内容均打印为不透明。使用 pdflatex 时,一切工作正常。

\documentclass[a4paper,12pt]{article}

\usepackage{tikz}

\usepackage[xetex,active,tightpage]{preview}
%\usepackage[pdftex,active,tightpage]{preview}

\PreviewEnvironment[]{tikzpicture}

\begin{document}

\begin{tikzpicture}[line width=1ex]
  \draw (0,0) -- (3,1);
  \filldraw [fill=red,draw opacity=0.5] (1,0) rectangle (2,1);
\end{tikzpicture}

\end{document}

答案1

您可以通过选择页面大小等于图片大小来避免此问题。因此您不需要这样做,preview而且它与 XeLaTeX 配合得很好。为此,您需要将图片保存在框寄存器中。因为geometry只允许在序言中选择页面大小,所以您需要将图片移动到那里,只要它在保存框内(就像在环境中一样lrbox),就可以了。

我计划构建一个这样的功能standalone作为的替代方案preview

\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{geometry}

%\usepackage[active,tightpage]{preview}
%\usepackage[pdftex,active,tightpage]{preview}
%\PreviewEnvironment[]{tikzpicture}

\pagestyle{empty}
\normalfont% required to select normal font already in the preamble
\begin{lrbox}{0}%
\begin{tikzpicture}[line width=1ex]
  \draw (0,0) -- (3,1);
  \filldraw [fill=red,draw opacity=0.5] (1,0) rectangle (2,1);
\end{tikzpicture}%
\end{lrbox}

\geometry{paperwidth=\wd0,paperheight=\ht0,margin=0cm}
\parindent=0pt
\begin{document}
\usebox{0}%
\end{document}

结果

(外面的黑框是PDF查看器的背景)


即将推出的 1.0 版本standalone包含与此类似的代码,并避免了 的需要preview。它应该可以很好地适用于 XeLaTeX。

答案2

如果我使用 PSTricks 并XeLaTeX结合预览,它就可以正常工作。我之所以认为 TikZ 有问题,而不是预览有问题,

在此处输入图片描述

相关内容