在 \draw 中使用宏

在 \draw 中使用宏

我遇到了一些可能非常愚蠢的问题。我想要一个多版本文档 - 一个给我自己,一个给我的学生,还有一个完整版本。

这个想法是,你只需在文档开头更改版本,它就会切换我想要留空的部分的字体颜色(通常是我的例子):在学生版中,它会将部分文本写成与背景相同的颜色(因此不可见),在教师版中,它会以不同的颜色书写(这样我就知道我的学生必须完成什么),而完整版则将所有内容写成黑色。我有一份大文件,系统运行得很好。

但是,在使用 tikz 处理此系统时,我遇到了一些困难。以下代码:

\documentclass[a4paper,11pt]{article}

\usepackage{tikz}
\usepackage{ifthen}

\def\fondExercice{gray!10}
\def\couleurMaitre{gray!80}
\def\couleurComplet{black}

\newcommand{\versionEleve}{
    \def\macouleur{\fondExercice}
    \def\edition{E}
}
\newcommand{\versionMaitre}{
    \def\macouleur{\couleurMaitre}
    \def\edition{P}
}
\newcommand{\versionComplete}{
    \def\macouleur{\couleurComplet}
    \def\edition{C}
}

\newcommand\couleurTik[1][black]{
    \ifthenelse{\equal{\edition}{E}}{\fondExercice}{#1}
}

\begin{document}
    \versionEleve

    The current color is \couleurTik[yellow]

    \begin{tikzpicture}
        \draw[\couleurTik] (0,0) circle (1);    
    \end{tikzpicture}


\end{document}

不起作用并产生了一个我不明白的错误:\couleurTik[yellow]产生了预期的结果但\draw[\couleurTik] (0,0) circle (1);产生了错误。

我猜这是一种扩展问题,但尽管我尝试阅读一些相关内容,但对我来说它仍然很神秘。

有人知道为什么会失败吗?提前致谢!

编辑 :

经过寻找colorlet,我发现这是可行的

\documentclass[a4paper,11pt]{article}

\usepackage{tikz}
\usepackage{ifthen}

\def\fondExercice{gray!10}
\def\couleurMaitre{gray!80}
\def\couleurComplet{black}

\newcommand{\versionEleve}{
    \def\macouleur{\fondExercice}
    \colorlet{couleurTik}{\fondExercice}
    \def\edition{E}
}
\newcommand{\versionMaitre}{
    \def\macouleur{\couleurMaitre}
    \colorlet{couleurTik}{\couleurMaitre}
    \def\edition{P}
}
\newcommand{\versionComplete}{
    \def\macouleur{\couleurComplet}
    \colorlet{couleurTik}{\couleurComplet}
    \def\edition{C}
}


\begin{document}
    \versionEleve


    \begin{tikzpicture}
        \draw[color=couleurTik] (0,0) circle (1);   
    \end{tikzpicture}


\end{document}

但我还是不明白为什么第一个代码没有......

答案1

您可以简单地tikzstyle使用定义的颜色为每个版本定义一个新的颜色。

\documentclass[a4paper,11pt]{article}

\usepackage{tikz}
\usepackage{ifthen}

\def\fondExercice{gray!10}
\def\couleurMaitre{gray!80}
\def\couleurComplet{black}

\newcommand{\versionEleve}{
    \def\macouleur{\fondExercice}
    \def\edition{E}
    \tikzstyle{mycolor} = [\macouleur]
}
\newcommand{\versionMaitre}{
    \def\macouleur{\couleurMaitre}
    \def\edition{P}
    \tikzstyle{mycolor} = [\macouleur]
}
\newcommand{\versionComplete}{
    \def\macouleur{\couleurComplet}
    \def\edition{C}
    \tikzstyle{mycolor} = [\macouleur]
}

\newcommand\couleurTik[1][black]{
    \ifthenelse{\equal{\edition}{E}}{\fondExercice}{#1}
}

\begin{document}
    \versionEleve
    %\versionMaitre
    %\versionComplete

    \begin{tikzpicture}
        \draw[mycolor] (0,0) circle (1);    
    \end{tikzpicture}


\end{document}

相关内容