这是另一个问题的后续问题我在这里问。我觉得另一个问题仍然需要一个正确的答案,希望这个当前更具体的问题将有助于实现这一点。一般目的是充分了解如何指定阴影中的颜色位置以产生所需的结果。虽然很多时候示例很容易使用具有对称图案的阴影,但当我尝试实际控制哪些区域开始和结束某些颜色时,我无法理解这是如何工作的。
下面是一个具体的例子,其中有一个 10 厘米长的条(1 厘米的单位绘制在其正下方),我预期 3 个阴影区域位于中心,但事实并非如此:
代码:
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{calc}
\begin{document}
\pgfdeclarehorizontalshading{grad3}{2cm}{
color(0cm)=(white);
color(0.28cm)=(white);color(0.29cm)=(black);color(0.31cm)=(black);color(0.32cm)=(white);
color(0.48cm)=(white);color(0.49cm)=(black);color(0.51cm)=(black);color(0.52cm)=(white);
color(0.68cm)=(white);color(0.69cm)=(black);color(0.71cm)=(black);color(0.72cm)=(white);
color(1cm)=(white)
}
\begin{tikzpicture}
\fill[shading=grad3,shading angle=0] (current page.north west) ++ (2cm,-6cm) rectangle ++ (10cm,-2cm);
\foreach \i in {0,...,10}
\draw[draw=black] (current page.north west) ++ (2cm+\i cm,-8cm) rectangle ++( 0cm,-1cm);
\end{tikzpicture}
\end{document}
这PGF/TIKZ 手册确实指定了阴影如何被剪裁(第 114.3 节,第 1199-1201 页),我认为在输入区域的开始和结束时需要考虑这些信息。但这不是当前的问题,因为即使只包括中央区域(在 49%-51% 部分),该区域也不是居中的……为什么?
此外,这三个区域应该占据 4% 的空间(例如从 0.48 厘米到 0.52 厘米),由于阴影裁剪只留下 50% 可见(在我的情况下,没有旋转),因此可能翻倍到 8%。但在这里,可以清楚地看到每个区域占据了超过 1 厘米的缺口,即超过 10%。
注意:如果尝试回答这个问题,请尝试不对称放置,例如 30%-70%,以确保配方有效。
[编辑1] 正如 Rmano 在评论中指出的那样,不同的查看器会产生不同的输出。上面的截图来自 Overleaf;下面是我在计算机上使用 TeXstudio 获得的截图。来自 TeXstudio 的截图:
如您所见,虽然现在每个带的宽度看起来差不多正确,但居中问题仍然存在。
答案1
和你的另一个问题一样。如果你坚持使用 100bp 阴影并且不使用 move-to 操作来扩大路径,那么你可能会得到想要的结果。但请注意,可能会出现舍入误差...
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{calc}
\begin{document}
\pgfdeclarehorizontalshading{grad3}{100bp}{
color(0bp)=(white);
color(28bp)=(white);color(29bp)=(black);color(31bp)=(black);color(32bp)=(white);
color(48bp)=(white);color(49bp)=(black);color(51bp)=(black);color(52bp)=(white);
color(68bp)=(white);color(69bp)=(black);color(71bp)=(black);color(72bp)=(white);
color(100bp)=(white)
}
\begin{tikzpicture}
\fill[shading=grad3,shading angle=0] ([xshift=2cm,yshift=-6cm]current page.north west) rectangle ++ (10cm,-2cm);
\foreach \i in {0,...,10}
\draw[draw=black] (current page.north west) ++ (2cm+\i cm,-8cm) rectangle ++( 0cm,-1cm);
\end{tikzpicture}
\end{document}