我怎样才能在 LaTeX 代码中使用 \usepgfplotslibrary{fillbetween} 的内容而不按顺序:\usepgfplotslibrary{fillbetween}

我怎样才能在 LaTeX 代码中使用 \usepgfplotslibrary{fillbetween} 的内容而不按顺序:\usepgfplotslibrary{fillbetween}

嘿,我必须在 Wordpress 中使用带有插件 Quicklatex 的 LaTeX。使用 pgfplots 包时出现问题。当我在序言中输入 \usepgfplotslibrary{fillbetween} 时,我收到错误:

我找不到文件“pgflibrarypgfplots.fillbetween.code.tex”。前导文本:\usepgfplotslibrary{fillbetween}

我怎样才能在我的 TeX 代码中添加库条目的内容?

%--------------------------------------------
%
% Package pgfplots
%
% Provides a user-friendly interface to create function plots (normal
% plots, semi-logplots and double-logplots).
% 
% It is based on Till Tantau's PGF package.
%
% Copyright 2013 by Christian Feuersaenger
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
% 
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
% 
% You should have received a copy of the GNU General Public License
% along with this program.  If not, see <http://www.gnu.org/licenses/>.
%
%--------------------------------------------


% This library adds support for high-level instructions for "fill area
% between two arbitrary plots of functions".
%
% It activates the syntax
%
%   \addplot fill between[of=A and B];
%
% where A and B are two plots named by 'name path='.
%
% In fact, this here is not much more than a low-level invocation of
% \pgfpathfillbetween
% and a couple of styles. It could become a TikZ library because it
% actually works on any two named paths, but it has its restrictions
% regarding the supported input paths: both need to be plots of
% functions (non-intersecting, should have at most one function value
% for each canvas X coord)

\pgfutil@IfUndefined{pgfplotsset}{%
    \pgferror{Please load pgfplots before pgfplots.fillbetween.}%
    \endinput
}{}%

\usetikzlibrary{fillbetween}
\usepgfplotslibrary{decorations.softclip}

\pgfkeys{
    /pgfplots/every fill between plot/.style={/pgfplots/area legend,/tikz/fill},
    /tikz/soft clip assign/domain/.code args={#1:#2}{%
        \pgfplotsifisvisualizationphase{%
            \edef\pgfplots@loc@TMPa{%
                (axis cs:#1,\pgfkeysvalueof{/pgfplots/ymin}) 
                rectangle (axis cs:#2,\pgfkeysvalueof{/pgfplots/ymax})}%
            \pgfkeysalso{/tikz/soft clip assign/path/.expand once=\pgfplots@loc@TMPa}%
        }{}%
    },%
    /tikz/soft clip assign/y domain y/.style={/tikz/soft clip assign/domain y={#1}},
    /tikz/soft clip assign/domain y/.code args={#1:#2}{%
        \pgfplotsifisvisualizationphase{%
            \edef\pgfplots@loc@TMPa{%
                (axis cs:\pgfkeysvalueof{/pgfplots/xmin},#1) 
                rectangle (axis cs:\pgfkeysvalueof{/pgfplots/xmax},#2)}%
            \pgfkeysalso{/tikz/soft clip assign/path/.expand once=\pgfplots@loc@TMPa}%
        }{}%
    },%
    %
    /pgfplots/execute at begin axis@@/.add={}{%
        \gdef\pgfplotsfillbetween@list@of@layers@with@clippath{}%
        \gdef\b@pgfplotsfillbetween@list@has@set@layers{0}%
    },
}

% #1: the value of /tikz/fill between/on layer
\def\pgfplotsfillbetween@ensure@clipping@on@layer{%
    \ifpgfplots@clip
        \pgfkeysgetvalue{/tikz/fill between/on layer}\pgfplots@loc@TMPa
        \edef\pgfplots@loc@TMPa{\pgfplots@loc@TMPa}%
        %
        % check if 'pre main,' is inside of the already prepared layers:
        \def\pgfplots@loc@TMPb{\expandafter\pgfutil@in@\expandafter{\pgfplots@loc@TMPa,}}%
        \expandafter\pgfplots@loc@TMPb\expandafter{\pgfplotsfillbetween@list@of@layers@with@clippath}%
        %
        \ifpgfutil@in@
            % ah - already prepared. Good, nothing left to do.
        \else
            \pgfplots@log3{fill between: found 'clip=true'. Preparing pgfplotsextra instruction with clip path for layer '\pgfplots@loc@TMPa'...}%
            \xdef\pgfplotsfillbetween@list@of@layers@with@clippath{\pgfplots@loc@TMPa,\pgfplotsfillbetween@list@of@layers@with@clippath}%
            %
            \edef\pgfplots@loc@TMPb{%
                \noexpand\pgfplotsextra{%
                    \noexpand\pgfplotsonlayer{\pgfplots@loc@TMPa}%
                    \noexpand\pgfplotspathaxisoutline
                    \noexpand\pgfusepath{clip}%
                    \noexpand\endpgfplotsonlayer
                }%
            }%
            \pgfplots@loc@TMPb
            %
        \fi
    \fi
}%

% The options are from 
% \addplot[#1] fill between[#2] #3;
%
% This method is invoked from the global \addplot dispatching.
\def\pgfplotslibraryfillbetween@addplot#1#2#3{%
    %
    \pgfplots@start@plot@with@behavioroptions{/pgfplots/every fill between plot,#1}%
    %
    \pgfkeysvalueof{/pgfplots/execute at end survey}%
    \pgfplots@remember@survey@option@list
    %
    %
    \pgfplotslibraryfillbetweenpreparecurrentlayer
    %
    \pgfplots@addplot@enqueue@coords{%
        % precmd
    }{%
        % empty - this here is a TikZ instruction, not a "real" \addplot command
    }{%
        % the path instruction:
        \tikzfillbetween[#2]{%
            /pgfplots/.search also=/tikz,%
            /pgfplots/.cd,%
            /tikz/fill between/every last segment/.append style={/tikz/fill between/path after segment={#3}},%
            #1%
        }%
    }{% 
        % post command.
    }%
}

% ONLY TO BE USED AS LATER OPTION!
\pgfkeysdef{/pgfplots/fill between/@ensure layers}{%
    \ifpgfplots@layered@graphics
    \else
        \pgfplots@log3{fill between: activating layered graphics}%
        \pgfplotsset{set layers}%
        \pgfplots@set@options@of@layered@graphics
    \fi
}%

% SIDE-EFFECT: modifies \b@pgfplotsfillbetween@list@has@set@layers and
% \pgfplotsfillbetween@list@of@layers@with@clippath
\def\pgfplotslibraryfillbetweenpreparecurrentlayer{%
    \pgfkeysgetvalue{/tikz/fill between/on layer}\pgfplots@loc@TMPa
    \ifx\pgfplots@loc@TMPa\pgfutil@empty
    \else
        \if0\b@pgfplotsfillbetween@list@has@set@layers
            %
            \pgfplotssetlateoptions{fill between/@ensure layers}%
            \gdef\b@pgfplotsfillbetween@list@has@set@layers{1}%
        \fi
        \pgfplotsfillbetween@ensure@clipping@on@layer%
    \fi
}

\def\pgfplots@tikzfillbetween{\pgfutil@ifnextchar[{\pgfplots@tikzfillbetween@opt}{\pgfplots@tikzfillbetween@opt[]}}
\def\pgfplots@tikzfillbetween@opt[#1]#2{%
    \pgfplots@addplot@enqueue@coords{%
        % precmd
    }{%
        % empty - this here is a TikZ instruction, not a "real" \addplot command
    }{%
        % the path instruction:
        \tikzfillbetween[#1]{#2}%
    }{% 
        % post command.
    }%
}%

\expandafter\def\expandafter\pgfplots@replace@path@commands\expandafter{\pgfplots@replace@path@commands
    \let\pgfplots@orig@tikzfillbetween=\tikzfillbetween
    \let\tikzfillbetween=\pgfplots@tikzfillbetween
}%
\expandafter\def\expandafter\pgfplots@restore@path@commands\expandafter{\pgfplots@restore@path@commands
    \let\tikzfillbetween=\pgfplots@orig@tikzfillbetween
}

\endinput

答案1

我是 QuickLaTeX 的作者。

昨天,我们在我们的服务器上更新了 TeXLive 发行版 - 现在 QuickLaTeX 支持 fillbetween 所需的最新 pgfplots 1.10。

几天前我们的支持论坛也提出了这个问题,请查看详细信息:https://wordpress.org/support/topic/pgfplots-fillbetween?replies=6

是的 - 支持 tikZ 和相关软件包。事实上,几乎可以使用 TeXLive 的任何软件包。

相关内容