为什么我的 TikZ 填充命令(使用 foreach)无法在所有 PDF 查看器中正确显示?

为什么我的 TikZ 填充命令(使用 foreach)无法在所有 PDF 查看器中正确显示?

fill当我在(或) 命令中使用 foreach 时draw,生成的 PDF 仅出现在某些 PDF 查看器(VS Code、Firefox)中,而不会出现在其他 PDF 查看器(MS Edge、Google Drive、Dropbox)中。

下面是复制此操作的最小代码片段:

\begin{tikzpicture}
    \begin{axis}[
        ticks = none,
        axis lines = center,
        xlabel = $x$,
        ylabel = $y$,
        xmin=-3,
        xmax=10,
        ymin=-4, 
        ymax=4]

        \addplot [
            domain=0:5, 
            samples=100, 
            color=blue
        ]{sqrt(x)};
        \addplot [
            domain=5:6, 
            samples=100, 
            color=blue,
            dashed
        ]{sqrt(x)};

        \fill [fill=green,
                fill opacity=0.2]
            (-3,4) -- (0,4) -- (0,-4) -- (-3,-4) -- cycle;

        \fill [fill=blue,
                fill opacity=0.2] 
            foreach \x in {0, 0.1, ..., 5}
            { -- ({\x}, {sqrt(\x)}) }
            -- (4,0) -- cycle;
    \end{axis}
\end{tikzpicture}

以下是 VS Code 和 Edge 并排打开同一文件的屏幕截图: 上述代码的 PDF 结果

有办法解决这个问题吗?还是我必须手动输入填充的所有坐标?

PS 这不是另一个帖子,因为尽管不透明度为 0.2,但绿色填充仍可正常显示。

答案1

您缺少起始坐标:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        ticks = none,
        axis lines = center,
        xlabel = $x$,
        ylabel = $y$,
        xmin=-3,
        xmax=10,
        ymin=-4, 
        ymax=4]

        \addplot [
            domain=0:5, 
            samples=100, 
            color=blue
        ]{sqrt(x)};
        \addplot [
            domain=5:6, 
            samples=100, 
            color=blue,
            dashed
        ]{sqrt(x)};

        \fill [fill=green,
                fill opacity=0.2]
            (-3,4) -- (0,4) -- (0,-4) -- (-3,-4) -- cycle;

        \fill [fill=blue,
                fill opacity=0.2] 
            (0,0) %<--- missing
            foreach \x in {0, 0.1, ..., 5}
            { -- ({\x}, {sqrt(\x)}) }
            -- (4,0) -- cycle;
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容