我怎样才能将黄色阴影区域变成不透明阴影 1 来演示等价分数的概念?
\documentclass{article}
\usepackage{tikz,amsmath,xcolor}
\begin{document}
\[ \begin{tikzpicture}
\node at (0,0) {$\dfrac{a \cdot c}{b \cdot c}=\color{blue}\underbrace{\color{black}{}\dfrac{a}{b} \cdot \colorbox{yellow}{$\dfrac{c}
{c}$}}}\color{black}{}=\dfrac{a}{b}$};
\draw[->,blue] (.2,-.5)--(.2,-.7)--(1.2,-.7)--(1.2,-.3);
\node at (.2,-.7) [below right] {\scriptsize $\color{blue}{\text{Since}\ \dfrac{a}{b} \cdot 1 =\dfrac{a}{b}}$};
\end{tikzpicture} \]
\end{document}
看起来像这样:
最终看起来像这样:
答案1
我对这个问题的各种版本感到困惑。这让我的答案看起来非常复杂。然而,这是因为答案(我在下面保留)会将公式剪裁成与轮廓1
或其他东西相吻合。现在我发现接受的答案不具备这些功能,我还提供了一个精简版,它有一个很大的优势(恕我直言),你不必调整大量的维度。
\documentclass{article}
\usepackage{tikz,amsmath,pifont}
\usetikzlibrary{backgrounds}
\newcommand{\PlaceCharOverSomething}[3][xscale=11,yscale=5]{%
\tikz[baseline=(X.base)]{
\node[opacity=0] (tmpX){#3};
\begin{scope}[on background layer]
\clip (tmpX.south west) rectangle (tmpX.north east);
\node[overlay,outer sep=0pt,text=blue!,opacity=0.3,#1]
{\bfseries\sffamily #2};
\end{scope}
\node [inner sep=0pt](X){#3};}%
}
\begin{document}
\[
\dfrac{a \cdot c}{b \cdot c}=
\textcolor{blue}{\underbrace{\textcolor{black}{\dfrac{a}{b} \cdot}
\PlaceCharOverSomething{\ding{192}}{$\dfrac{c}{c}$}
}_{\tikz[remember picture]{\coordinate(b);}}}
=\tikz[remember picture,baseline=(Y.base)]{\node (Y) {$\dfrac{a}{b}$};}
\]
\tikz[remember picture,overlay]{\draw[->,blue] ([yshift=1mm]b)--++(0,-0.2)
-|(Y) node[pos=0.25,below]{since $\frac{a}{b}\cdot1=\frac{a}{b}$};}
\end{document}
宽阔的形状也没有问题。
\documentclass{article}
\usepackage{tikz,amsmath,pifont}
\usetikzlibrary{backgrounds}
\newcommand{\PlaceCharOverSomething}[3][xscale=51,yscale=6]{%
\tikz[baseline=(X.base)]{
\node[opacity=0] (tmpX){#3};
\begin{scope}[on background layer,overlay]
\clip ([xshift=-1mm]tmpX.south west) rectangle (tmpX.north east);
\node[overlay,outer sep=0pt,text=cyan,opacity=0.3,#1]
{\bfseries\sffamily #2};
\end{scope}
\node [inner sep=0pt](X){#3};}%
}
\begin{document}
\[
\dfrac{a \cdot c}{b \cdot c}=
\textcolor{blue}{\underbrace{\textcolor{black}{\dfrac{a}{b} \cdot}
\PlaceCharOverSomething{\ding{192}}{\textcolor{black}{$\dfrac{x-3}{x-3}$}}
}_{\tikz[remember picture]{\coordinate(b);}}}
=\tikz[remember picture,baseline=(Y.base)]{\node (Y) {$\dfrac{a}{b}$};}
\]
\tikz[remember picture,overlay]{\draw[->,blue] ([yshift=1mm]b)--++(0,-0.2)
-|(Y) node[pos=0.25,below]{since $\frac{a}{b}\cdot1=\frac{a}{b}$};}
\end{document}
现在提出了一个基于这个答案和那个答案,它允许您根据形状剪辑公式。您可以使用xscale
等yscale
。如果您将分数设为节点,则所有 tikz 选项都可用。顺便说一句,不要使用\color
,\textcolor
而应使用 。而且很快就会有 tikzmark 库的升级可用,这将大大简化这些事情。
\documentclass{article}
\usepackage{tikz,amsmath,pifont}
\usetikzlibrary{fadings,backgrounds}
\usepackage{contour}
\newcommand{\PlaceCharOverSomething}[3][xscale=11,yscale=5]{%
\renewcommand*\sfdefault{ugq}
\begin{tikzfadingfrompicture}[name=temp]
\node[transparent!0,#1]
{\contour{black}{\bfseries\sffamily\textcolor{white}{#2}}};
\end{tikzfadingfrompicture}%
\tikz[baseline=(X.base)]{
\node[opacity=0] (tmpX){#3};
\begin{scope}[on background layer]
\clip (tmpX.south west) rectangle (tmpX.north east);
\node[overlay,outer sep=0pt,text=blue!,opacity=0.3,#1]
{\bfseries\sffamily #2};
\end{scope}
\path[path fading=temp,fit fading=false,overlay,inner sep=0pt] node (X){#3};
\path (X.west) -- (X.east);
\path (X.north) -- (X.south);}%
}
\begin{document}
\[
\dfrac{a \cdot c}{b \cdot c}=
\textcolor{blue}{\underbrace{\textcolor{black}{\dfrac{a}{b} \cdot}
\PlaceCharOverSomething{\ding{192}}{$\dfrac{c}{c}$}
}_{\tikz[remember picture]{\coordinate(b);}}}
=\tikz[remember picture,baseline=(Y.base)]{\node (Y) {$\dfrac{a}{b}$};}
\]
\tikz[remember picture,overlay]{\draw[->,blue] ([yshift=1mm]b)--++(0,-0.2)
-|(Y) node[pos=0.25,below]{since $\frac{a}{b}\cdot1=\frac{a}{b}$};}
\end{document}
请注意,因为我使用的是 Ti钾Z,有些东西是免费的。
- 我不需要手动调整任何尺寸。特别是,分数正好位于没有这个 brimborium 的位置。但是,如果你愿意,你可以能使节点更宽,例如通过替换
\path (X.west) -- (X.east);
。\path ([xshift=-1pt]X.west) -- (X.east[xshift=1pt]);
我认为我不必微调尺寸这一事实是一个很大的优势。 - 同样,箭头完全由公式的元素固定。 的所有维度
\draw[->,blue] (.2,-.5)--(.2,-.7)--(1.2,-.7)--(1.2,-.3);
都是多余的,我唯一指定的\draw[->,blue] ([yshift=1mm]b)--++(0,-0.2) -|(Y);
是 ,yshift
它使箭头从稍微高一点的地方开始(我实际上只是添加了它来向您展示如何调整这些东西,如果您真的想要的话),-0.2
它只是说箭头需要向下移动0.2cm
才能连接到右边的分数。如果你在右边的分数前添加一些东西,箭头会自动调整。 - 这种路径淡化非常强大,因为它允许您切断超出角色的内容。虽然这里不需要,但这可能是我以后应用这些技巧时会用到的东西。
- 不用说,如果您决定分数
c/c
也应具有一定的不透明度或颜色,这只需要一个简单的切换。
答案2
和stackengine
。
\documentclass{article}
\usepackage{tikz,amsmath,xcolor,stackengine}
\begin{document}
\[ \begin{tikzpicture}
\node at (0,0) {$\dfrac{a \cdot c}{b \cdot c}=\color{blue}%
\underbrace{\color{black}{}\dfrac{a}{b} \cdot
\stackengine{0pt}{\makebox[0pt]{\raisebox{-10pt}{\scalebox{10}[8]{%
\color{blue!20}\sffamily\tiny 1}}}}{$\dfrac{c}{c}$}{O}{c}{F}{F}{L}}%
\color{black}{}=\dfrac{a}{b}$};
\draw[->,blue] (.2,-.5)--(.2,-.7)--(1.2,-.7)--(1.2,-.3);
\node at (.2,-.7) [below right] {\scriptsize $\color{blue}{%
\text{Since}\ \dfrac{a}{b} \cdot 1 =\dfrac{a}{b}}$};
\end{tikzpicture} \]
\end{document}