如何定义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}