我正在尝试定义一个文档,其中有不同级别的内容包含在 TikZ 框中,如下所示;想法是每个框都应该根据计数器的值(显示在每个矩形顶部的圆圈内)获得一种颜色。 这是我的代码的摘录:
documentclass[10pt]{book}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{engrec}
\usepackage{yfonts}
%\usepackage[a4paper, inner=1cm, width=19cm, top=1cm, bottom=2cm, marginpar=0pt, twoside, showframe]{geometry}
\usepackage[a4paper, inner=1cm, width=19cm, top=1cm, bottom=2cm, marginpar=0pt, twoside]{geometry}
\usepackage{xparse}
\usepackage{xcolor}
\usepackage{xspace}
\usepackage{ifthen}
\usepackage{environ}
\usepackage{tikz}
\usetikzlibrary{
positioning,
fit,
arrows,
arrows.meta,
intersections,
decorations,
backgrounds,
calc,
math,
through,
shapes,
shadows,
decorations.pathmorphing
}
\usepackage{lipsum}
\setmainfont{Tisa OT}
\setsansfont{TeX Gyre Heros Cn}
\setdefaultlanguage{italian}
\definecolor{conceptcolor}{RGB}{160,44,90}
\definecolor{subconceptcolora}{RGB}{255,102,0}
\definecolor{subconceptcolorb}{RGB}{95,95,211}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% CONCEPT BOX %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{conceptctr}
\renewcommand{\theconceptctr}{\Alph{conceptctr}}
\tikzstyle{conceptboxtitlesty} =
[
circle,%
draw = conceptcolor,%
line width = 0.7mm,%
node font = \Huge\bfseries\sffamily,%
text = conceptcolor,%
fill = white,%
inner sep = 3pt%
]
\tikzstyle{conceptboxsty} =
[
rectangle,
rounded corners = 10pt,%
draw = conceptcolor,
line width = 0.7mm,%
node font = \small
]
%
\NewEnviron{conceptbox}{
\stepcounter{conceptctr}
\begin{tikzpicture}
\node[conceptboxsty, anchor=north west](concepttext) at (-6,0) {
\begin{minipage}{18cm}
\vspace{20pt}
\BODY
\end{minipage}
\vspace{20pt}
};
\node[conceptboxtitlesty, xshift = 2cm](conecepttitle) at (concepttext.north west){\theconceptctr};
\end{tikzpicture}
}[\newline]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% SUBCONCEPT BOX %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{subconceptctr}[conceptctr]
\renewcommand{\thesubconceptctr}{\arabic{subconceptctr}}
\newcommand{\subconceptcolor}[1]
{%
\ifthenelse{#1 = 1}%
{subconceptcolora}%
{%
\ifthenelse{#1 = 2}%
{subconceptcolorb}%
{}%% &c.
}%
}
\tikzstyle{subconcepttitlesty} =
[
circle,%
draw = \currentcolor,%
line width = 0.5mm,%
node font = \LARGE\bfseries\sffamily,%
text = \currentcolor,%
fill = white,%
inner sep = 3pt%
]
\tikzstyle{subconceptboxsty} =
[
rectangle,
rounded corners = 10pt,%
draw = \currentcolor,
line width = 0.5mm,%
node font = \small%
]
%
\newcommand{\currentcolor}{}
\NewEnviron{subconceptbox}{
\stepcounter{subconceptctr}
\renewcommand{\currentcolor}{\subconceptcolor{\value{subconceptctr}}}
\begin{tikzpicture}
\node[subconceptboxsty,
anchor=north west,
](subconcepttext) at (0,-1) {
\begin{minipage}{17.5cm}
\vspace{20pt}
\BODY
\vspace{10pt}
\end{minipage}
};%
\node[subconcepttitlesty,
anchor = center,
xshift = 2cm, yshift = 0cm](subconecepttitle) at (subconcepttext.north west){\thesubconceptctr};%
\end{tikzpicture}
}[\newline]
\begin{document}
\begin{conceptbox}
Il C. è \textsl{similitudo rei in mente expressa} (cioè la rappresentazione di una cosa espressa nella mente). Infatti, essa è il prodotto dell' \textsl{apprensione}, ovvero della prima operazione della mente che astrae, mediante i sensi, una rappresentazione universale di ciò che si osserva fuori di noi.\\\newline
\begin{subconceptbox}
Il C. ci rimanda immediatamente alla realtà e non allo stesso C. Esso significa ciò che la cosa è secondo un aspetto determinato (i.e., il concetto di "relazione" ci porta a capire cos' è una relazione; quello di "tartaruga", a capire cos' è una tartaruga). Ciò non implica una totale comprensione della natura, né che siamo capaci di definirla, ma senz' altro comporta una certa intellezione.
\end{subconceptbox}
\begin{subconceptbox}
Ciò che caratterizza il C. è la sua \textit{\textbf{Universalità}}: quanto è espresso dal C. vale per tutti e per sempre, grazie al fatto che considera tutte le note essenziali che tutti gl' individui devono possedere. Grazie all' Universalità abbiamo i seguenti risultati:\par%
\end{subconceptbox}
\end{conceptbox}
\end{document}
我看了一下这个问题:
如何向 \tikzstyle 传递参数?; 还有这些TikZ 图内的 If-then-else?,TikZ 图内的 If-then-else?。
所以我的理解是\ifthenelse
TikZ 无法识别该命令;因此我尝试将条件的值传递给变量 ( \currentcolor
),我认为该变量在调用环境之前应该已经初始化tikzpicture
。
然而,我在编译过程中得到的是一堆 (166) 个错误。
有什么建议吗?感谢您的支持。
答案1
\tikzstyle
已弃用。我没有安装您的字体,但它们与问题无关。\ifthen
不可扩展,但在当前情况下,您只需要\ifodd
。对于更复杂的情况,您可以使用 pgf 来定义颜色。
\documentclass[10pt]{book}
\usepackage[a4paper, inner=1cm, width=19cm, top=1cm, bottom=2cm, marginpar=0pt, twoside]{geometry}
\usepackage{environ}
\usepackage{tikz}
\usetikzlibrary{
positioning,
fit,
arrows,
arrows.meta,
intersections,
decorations,
backgrounds,
calc,
math,
through,
shapes,
shadows,
decorations.pathmorphing
}
\usepackage{lipsum}
\definecolor{conceptcolor}{RGB}{160,44,90}
\definecolor{subconceptcolora}{RGB}{255,102,0}
\definecolor{subconceptcolorb}{RGB}{95,95,211}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% CONCEPT BOX %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{conceptctr}
\renewcommand{\theconceptctr}{\Alph{conceptctr}}
\tikzset{conceptboxtitlesty/.style={
circle,%
draw = conceptcolor,%
line width = 0.7mm,%
node font = \Huge\bfseries\sffamily,%
text = conceptcolor,%
fill = white,%
inner sep = 3pt%
},
conceptboxsty/.style={
rectangle,
rounded corners = 10pt,%
draw = conceptcolor,
line width = 0.7mm,%
node font = \small
}}
%
\NewEnviron{conceptbox}{
\stepcounter{conceptctr}
\begin{tikzpicture}
\node[conceptboxsty, anchor=north west](concepttext) at (-6,0) {
\begin{minipage}{18cm}
\vspace{20pt}
\BODY
\end{minipage}
\vspace{20pt}
};
\node[conceptboxtitlesty, xshift = 2cm](conecepttitle) at (concepttext.north west){\theconceptctr};
\end{tikzpicture}
}[\newline]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% SUBCONCEPT BOX %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{subconceptctr}[conceptctr]
\renewcommand{\thesubconceptctr}{\arabic{subconceptctr}}
\tikzset{subconcepttitlesty/.style={
circle,%
draw = \currentcolor,%
line width = 0.5mm,%
node font = \LARGE\bfseries\sffamily,%
text = \currentcolor,%
fill = white,%
inner sep = 3pt%
},
subconceptboxsty/.style={
rectangle,
rounded corners = 10pt,%
draw = \currentcolor,
line width = 0.5mm,%
node font = \small%
}}
%
\newcommand{\currentcolor}{}
\NewEnviron{subconceptbox}{
\stepcounter{subconceptctr}
\ifodd\value{subconceptctr}
\renewcommand{\currentcolor}{subconceptcolora}
\else
\renewcommand{\currentcolor}{subconceptcolorb}
\fi
\begin{tikzpicture}
\node[subconceptboxsty,
anchor=north west,
](subconcepttext) at (0,-1) {
\begin{minipage}{17.5cm}
\vspace{20pt}
\BODY
\vspace{10pt}
\end{minipage}
};%
\node[subconcepttitlesty,
anchor = center,
xshift = 2cm, yshift = 0cm](subconecepttitle) at (subconcepttext.north west){\thesubconceptctr};%
\end{tikzpicture}
}[\newline]
\begin{document}
\begin{conceptbox}
Il C. \`e \textsl{similitudo rei in mente expressa} (cio\`e la
rappresentazione di una cosa espressa nella mente). Infatti,
essa \`e il prodotto dell' \textsl{apprensione}, ovvero della
prima operazione della mente che astrae, mediante i sensi, una
rappresentazione universale di ci\`o che si osserva fuori di noi.\\\newline
\begin{subconceptbox}
Il C. ci rimanda immediatamente alla realt\`a e non allo stesso C.
Esso significa ci\`o che la cosa e secondo un aspetto determinato (i.e., il
concetto di "relazione" ci porta a capire cos' \`e una relazione; quello di
"tartaruga", a capire cos' \`e una tartaruga). Ci\`o non implica una totale
comprensione della natura, n\'e che siamo capaci di definirla, ma senz' altro
comporta una certa intellezione.
\end{subconceptbox}
\begin{subconceptbox}
Cio che caratterizza il C. \`e la sua
\textit{\textbf{Universalit\'a}}: quanto \`e espresso dal C. vale per tutti e
per sempre, grazie al fatto che considera tutte le note essenziali che tutti gl'
individui devono possedere. Grazie all' Universalita abbiamo i seguenti
risultati:\par%
\end{subconceptbox}
\end{conceptbox}
\end{document}
请注意,使用tcolorbox
将是创建这些框架的更好方法。这个答案只是为了从代码中删除错误,而不是提供代码tcolorbox
,但我认为这会更有意义。