我有一个像这样的颜色切换功能
\definecolor{chap1}{RGB}{68, 114, 148}
\definecolor{chap2}{RGB}{10,130,124}
\definecolor{chap3}{RGB}{250,72,46}
\definecolor{chap4}{RGB}{244,163,46}
\usepackage{etoolbox}
\newcommand{\basecolor}{
\ifcase\arabic{chapter} black\or chap1\or chap2\or chap3\or chap4\else black\fi%
}
\newcommand{\chaptercolor}{\basecolor}
这样我就可以\chaptercolor
根据文档中的位置使用任意位置来获取为该章节选择的颜色。除了一件事外,效果很好。
我无法让它与情节一起工作。
以此简单的情节为例:
\tikzset{>=stealth}
\begin{tikzpicture}
\begin{axis}[
domain=0:1, range=0:1,
axis lines=none,
]
\addplot [->] plot coordinates {(0,0) (0,1)};
\addplot [->, color=\chaptercolor, fill=\chaptercolor, draw=\chaptercolor] plot coordinates {(0,0) (1,0)};
\end{axis}
\end{tikzpicture}
这给了我错误包 xcolor 错误:未定义颜色“chap2”。
里面全是奇怪的符号。
如果我直接使用颜色,效果会很好。如果绘图总是使用颜色,chap2
那就太好了,但到目前为止,这会给出更糟糕的错误消息。\chaptercolor
\tikzset{}
关于如何修复此问题,您有什么意见吗,或者是否可以采用不同的颜色循环方法?
编辑:
添加一个相同的颜色并在其名称前面加一个空格即可解决问题。
\definecolor{ chap1}{RGB}{68, 114, 148}
\definecolor{ chap2}{RGB}{10,130,124}
\definecolor{ chap3}{RGB}{250,72,46}
\definecolor{ chap4}{RGB}{244,163,46}
\definecolor{chap1}{RGB}{68, 114, 148}
\definecolor{chap2}{RGB}{10,130,124}
\definecolor{chap3}{RGB}{250,72,46}
\definecolor{chap4}{RGB}{244,163,46}
有点不雅,但还不算太糟,因为它只是在序言中。
答案1
我认为问题出在\basecolor
定义上。它在颜色名称前插入一个空格,这就是它起作用的原因\definecolor{ chap1}...
。
\documentclass{book}
\usepackage{pgfplots}
\definecolor{chap1}{RGB}{68, 114, 148}
\definecolor{chap2}{RGB}{10,130,124}
\definecolor{chap3}{RGB}{250,72,46}
\definecolor{chap4}{RGB}{244,163,46}
\usepackage{etoolbox}
\newcommand{\basecolor}{%
\ifcase\value{chapter}
black%
\or%
chap1%
\or%
chap2%
\or%
chap3%
\or%
chap4%
\else%
black%
\fi%
}
\newcommand{\chaptercolor}{\basecolor}
\begin{document}
\foreach \i in {1,...,5}
{
\chapter{\i}
\tikzset{>=stealth}
\begin{tikzpicture}
\begin{axis}[
domain=0:1, range=0:1,
axis lines=none,
]
\addplot [->] plot coordinates {(0,0) (0,1)};
\addplot [->, color=\chaptercolor, fill=\chaptercolor, draw=\chaptercolor] plot coordinates {(0,0) (1,0)};
\end{axis}
\end{tikzpicture}
}
\end{document}