tcolorbox 中的不透明度选项问题

tcolorbox 中的不透明度选项问题

下列

\documentclass[10pt]{article}
\usepackage[most]{tcolorbox}
\usepackage{graphicx}

\newtcbox{\mytransparentbox}{blank, on line, opacitytext=0.4}

\begin{document}
\includegraphics[scale=0.1]{engine}
\mytransparentbox{\includegraphics[scale=0.1]{engine}}
\end{document}

给出

在此处输入图片描述

使用的pdf文件可用这里

我希望车轮内部是白色的(或完全透明的)。有什么解决办法吗?


PS:就我而言,该包transparent不起作用(我猜是因为包冲突),所以我正在寻找一种不使用它的解决方案。


PPS:我正在寻找一种不需要修改图像的解决方案(例如将其转换为图像png)。

答案1

这是 Ulrike 代码的一个变体,用于在 tcbox 选项中包含白色矩形。可以使用finish选项在文本后包含图形命令(第 10.9 节,第 197 页)。

\newtcbox{\mytransparentbox}{blank, on line, 
      finish={\fill[white, opacity=0.6] (frame.south west) rectangle (frame.north east);}}

另一个选项是将类似的选项应用于\tcbincludegraphics框。此命令(第 11.1 节,第 251 页)将命令包含的图像\includegraphics放入 中tcolorbox。在这种情况下

\tcbincludegraphics[...]{engine}

两个示例的完整代码如下:

\documentclass[10pt]{article}
\usepackage[most]{tcolorbox}
\usepackage{graphicx}

%Original command with `finish` option
\newtcbox{\mytransparentbox}{blank, on line, finish={\fill[white, opacity=0.6] (frame.south west) rectangle (frame.north east);}}

%Options for tcbincludegraphics
\tcbset{
    mytransparentbox/.style={
        blank, hbox, on line, 
        graphics options={scale=0.1},       
        finish={\fill[white, opacity=.6]
            (frame.south west) rectangle 
            (frame.north east);}
    }
}

\begin{document}
\includegraphics[scale=0.1]{engine}
\begin{tikzpicture}%%%%%% Ulrike's solution
\node[inner sep=0pt] (a){\includegraphics[scale=0.1]{engine}};
\pgfsetfillopacity{0.6}
\fill[white](a.south west)rectangle (a.north east);
\end{tikzpicture}

\mytransparentbox{\includegraphics[scale=0.1]{engine}}
\tcbincludegraphics[mytransparentbox]{engine}
\end{document}

在此处输入图片描述

答案2

您可以在图片上放置一个不透明的白色矩形:

\documentclass[10pt]{article}
\usepackage[most]{tcolorbox}
\usepackage{graphicx}
\newtcbox{\mytransparentbox}{blank, on line, opacitytext=0.4}

\begin{document}
\includegraphics[scale=0.1]{engine}

\begin{tikzpicture}
\node[inner sep=0pt] (a){\includegraphics[scale=0.1]{engine}};
\pgfsetfillopacity{0.6}\fill[white](a.south west)rectangle (a.north east);
\end{tikzpicture}

\mytransparentbox{\includegraphics[scale=0.1]{engine}}

\end{document}

在此处输入图片描述

答案3

首先转换PDF文件放入巴布亚新几内亚图像,然后应用代码。

在此处输入图片描述

\documentclass[border=4mm]{standalone}
\usepackage[most]{tcolorbox}
\usepackage{graphicx}

\newtcbox{\mytransparentbox}{blank, on line, opacitytext=0.4}

\begin{document}
\includegraphics[scale=0.1]{engine1}
\mytransparentbox{\includegraphics[scale=0.1]{engine1}}
\end{document}

答案4

非乳胶方法:

pdf 文件的语法看起来有点奇怪。它没有直接包含形状,而是包含较大的正方形,这些正方形被剪裁成齿轮。

如果内圈填充白色,则可以避免透明度问题,这可以通过在 inkscape 等中编辑 pdf 来实现。

我将修复后的 pdf 版本上传至https://github.com/colasbd/bug_opacity_tcolorbox/blob/6893ed5d0222596010310882a17986fb63ce19ae/engine_fix.pdf

在此处输入图片描述

相关内容