使用宏/新命令来设置属性

使用宏/新命令来设置属性

如何定义newcommand以便可以将其用于属性?

我有\somecommand可以传递属性的函数,例如color=black在方括号中。现在我想做newcommand这样的事情:

\newcommand{\anewcommand}{color=black}

\begin{document}
    \somecommand[\anewcommand]
\end{document}

尽管它anewcommand保存的值与我通过输入传递的值相同,但它不起作用并告诉我我的属性未定义。

嗯。这\somecommand实际上ganttbar甘特图包。我想要拥有\newcommand{\person}{color=black}然后传递\person\ganttbar[\person]。希望这能更清楚地说明。

梅威瑟:

\documentclass[paper=a4,landscape]{scrartcl}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\usepackage{gantt}

\newcommand{\person}{color=black}

\begin{document}
    \begin{gantt}[xunitlength=0.8cm,fontsize=\small,titlefontsize=\small,drawledgerline=true]{2}{7} %{# of tasks}{# of slots}
        \begin{ganttitle}
            \titleelement{week 1}{7}
        \end{ganttitle}
        \ganttbar[color=NavyBlue]{localization}{3}{3} % this works
        \ganttbar[\person]{Bla}{1}{1} % this doesn't
    \end{gantt}
\end{document}

答案1

使用 转义命令{}可使您的 MWE 可编译。

但是,我无法让您深入了解内部工作原理。也许其他人可以帮忙。

编辑:

\person{}使其可编译,但是正如 cherrung 在评论中指出的那样,它并没有真正解决问题。

作为一个简单的解决方法,我仅将实际的颜色参数定义为变量:

\documentclass[paper=a4,landscape]{scrartcl}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\usepackage{gantt}

\newcommand{\person}{green}

\begin{document}
    \begin{gantt}[xunitlength=0.8cm,fontsize=\small,titlefontsize=\small,drawledgerline=true]{2}{7} %{# of tasks}{# of slots}
        \begin{ganttitle}
            \titleelement{week 1}{7}
        \end{ganttitle}
        \ganttbar[color=NavyBlue]{localization}{3}{3} % this works
        \ganttbar[color=\person]{Bla}{1}{1} % this works as well
    \end{gantt}
\end{document}

相关内容