这个问题与带圆角的 LaTeX 照片。假设我想在边注中放置一个圆角图像,因此图像适合\linewidth
边注的。如果我使用该问题答案中提出的技术,适合的\linewidth
不是图像,而是图像加上白色边框以产生圆角。
带有三幅图像的 MWE。第一幅,很普通。第二幅使用了 @PeterGrill 的方法。第三幅是我想要得到的,我使用了\hspace
,\vspace
并进行了一些计算以适合图像。但我不知道这个解决方案是否会有问题,因为我正在将 TikZ 图片扩展到 marginpar 之外。我想要一个仅限 TikZ 的解决方案。这样会更好,不是吗?
\documentclass[twoside,a4paper]{tufte-handout}
\usepackage{blindtext}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{calc}
\newcommand*{\ClipSep}{0.4cm}%
\begin{document}
\marginnote{\includegraphics[width=\linewidth]{frog.jpg}
%\raggedright \blindtext
}
\marginnote{
\begin{center}
\begin{tikzpicture}
\node [inner sep=0pt] at (0,0) {\includegraphics[width=\linewidth]{frog.jpg}};
\draw [white, rounded corners=\ClipSep, line width=\ClipSep]
(current bounding box.north west) --
(current bounding box.north east) --
(current bounding box.south east) --
(current bounding box.south west) -- cycle
;
\end{tikzpicture}
\end{center}
\raggedright \blindtext}
\marginnote{
\begin{center}
\hspace*{-\ClipSep}\begin{tikzpicture}
\node [inner sep=0pt] at (0,0) {\includegraphics[width=\linewidth + \ClipSep]{frog.jpg}};
\draw [white, rounded corners=\ClipSep, line width=\ClipSep]
(current bounding box.north west) --
(current bounding box.north east) --
(current bounding box.south east) --
(current bounding box.south west) -- cycle
;
\end{tikzpicture}
\end{center}
\vspace*{-\ClipSep}
\raggedright \blindtext}
\Blindtext
\end{document}
答案1
我为没有提供 TikZ 专属解决方案向 OP 表示歉意,但已经有三个不错的 TikZ 专属答案,这个问题的未来读者可能会根据该tcolorbox
软件包(实际上是基于 TikZ)使用我的答案。使用当前版本3.30 (2014/11/17)
,一个真正短的可以使用宏给出答案\tcbincludegraphics
。它将众所周知的包装\includegraphics
成tcolorbox
;因此,可以使用圆角。
完整的解决方案文本为:
\documentclass[twoside,a4paper]{tufte-handout}
\usepackage{blindtext}
\usepackage{tikz}
\usepackage[skins]{tcolorbox}
\newcommand*{\ClipSep}{0.4cm}%
\begin{document}
\marginnote{\tcbincludegraphics[blank,arc=\ClipSep]{frog.jpg}
\blindtext}
\Blindtext
\end{document}
答案2
怎么样path picture
?然后剪辑就完成了。但是,您必须先获取图像的高度,我将其放入一个临时框中。将minimum width
和minimum height
键分别设置为\wd\tmpbox
和可能更有效\ht\tmpbox+\dp\tmpbox
,但我只使用了\phantom
。
\documentclass[twoside,a4paper]{tufte-handout}
\usepackage{blindtext}
\usepackage{tikz}
\newcommand*{\ClipSep}{0.4cm}%
\newbox\tmpbox
\begin{document}
\marginnote{%
\setbox\tmpbox=\hbox{\includegraphics[width=\linewidth]{example-image}}%
\tikz\node [draw=white,
inner sep=0pt, outer sep=0pt, rounded corners=\ClipSep,
path picture={\node at (path picture bounding box.center) {\box\tmpbox};}]
{\phantom{\copy\tmpbox}};
\raggedright \blindtext}
\Blindtext
\end{document}
仅显示部分输出:
答案3
这是一个解决方案(包含双重图片):
\documentclass[twoside,a4paper]{tufte-handout}
\usepackage{blindtext}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{calc}
\newcommand*{\ClipSep}{0.4cm}%
\begin{document}
\marginnote{%
\begin{tikzpicture}
\node [inner sep=0pt,draw=white](a) {\includegraphics[width=\linewidth]{example-image}};
\filldraw[white,line width=0pt](a.south west) rectangle (a.north east);
\clip[rounded corners=\ClipSep] (a.south west) rectangle (a.north east);
\node [inner sep=0pt](a) {\includegraphics[width=\linewidth]{example-image}};
\end{tikzpicture}
\raggedright \blindtext}
\Blindtext
\end{document}
答案4
这是另一个使用box
and 的答案tikz
。为了使其看起来不同,我使用了宏\myclippedpic
。
\documentclass[twoside,a4paper]{tufte-handout}
\usepackage{blindtext}
\usepackage{tikz}
\newcommand*{\ClipSep}{0.4cm}%
\newbox\tmpbox
\newcommand{\myclippedpic}[1]{%
\setbox\tmpbox=\hbox{\includegraphics[width=\linewidth]{#1}}%
\begin{tikzpicture}
\clip[rounded corners=\ClipSep] (0,0) rectangle (\wd\tmpbox,\ht\tmpbox);
\node [inner sep=0pt] at (current bounding box.center) {\includegraphics[width=\linewidth]{#1}};
\end{tikzpicture}
}
\begin{document}
\marginnote{%
\myclippedpic{example-image}
\raggedright \blindtext}
\Blindtext
\end{document}