我无法让 xkeyval 与 \newenvironment 一起工作。如果我将整个过程定义为命令,它就可以完美地工作。所以我的猜测是问题不在于我如何使用 xkeyval,而在于我如何定义环境。我很难确定问题所在。TexStudio 告诉我错误日志非常大,因此无法通过查看它来判断哪里出了问题。
\makeatletter
\define@cmdkey[m]{graph}{xmax}{}
\define@cmdkey[m]{graph}{xmin}{}
...
\define@cmdkey[m]{graph}{label}{}
\presetkeys[m]{graph}{
xmax=10,
xmin=0,
ymax=10,
ymin=0,
axis=middle,
ticks=none,
xlabel=x,
ylabel=y,
clip=individual,
domain=0:10.5,
xlabelpl=right,
ylabelpl=above,}{}
\newenvironment{graf}[1][]{ %
\setkeys[m]{graph}{#1}
\begin{tikzpicture}
\begin{axis}[
axis lines=\cmdm@graph@axis,
unit vector ratio=1 1 1,
every axis x label/.style={at={(1,0)},font=\Large,\cmdm@graph@xlabelpl},
every axis y label/.style={at={(0,1)},font=\Large,\cmdm@graph@ylabelpl},
xlabel=$ \cmdm@graph@xlabel $,
ylabel=$ \cmdm@graph@ylabel $,
domain=\cmdm@graph@domain,
xmin=\cmdm@graph@xmin,
xmax=\cmdm@graph@xmax ,
ymin=\cmdm@graph@ymin,
ymax=\cmdm@graph@ymax ,
samples=100,
ticks=\cmdm@graph@ticks,
no marks,
clip mode=\cmdm@graph@clip,
]
}
{\end{axis} \end{tikzpicture}}
\makeatother
答案1
\newenvironment{graf}[1][]{}{}
产生错误
! LaTeX Error: Command \graf already defined.
Or name \end... illegal, see p.192 of the manual.
你真的不想忽略该错误。请用其他名称来命名您的环境,否则您将重新定义\endgraf
(这很糟糕)。