![如何定义数值变量?](https://linux22.com/image/307560/%E5%A6%82%E4%BD%95%E5%AE%9A%E4%B9%89%E6%95%B0%E5%80%BC%E5%8F%98%E9%87%8F%EF%BC%9F.png)
继Latex 维基页面我尝试\newcommand
过\DeclareRobustCommand
:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\newcommand{\marginProportion}{0.76}
\usepackage[scale=\marginProportion{}]{geometry}
\begin{document}
\end{document}
这两者都会导致大量的编译错误。
答案1
键值方法(通常)不会扩展键值。
在这种情况下,只会被复制,如定义scale=\marginProportion{}
的逐字输出所示。带有尾随的第二次调用只会将这些作为键值,与包中键的预期输入相冲突。\typeout
dummykey
{}
{}
scale
geometry
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{xkeyval}
\makeatletter
\define@key{fam}{dummykey}{%
\def\FamKVMacroDummy{#1}
\typeout{#1}
}%
\makeatother
\newcommand{\somecmd}[1]{%
\setkeys{fam}{#1}
Printing the key value: \FamKVMacroDummy
}
\newcommand{\marginProportion}{0.76}
\usepackage[scale=\marginProportion]{geometry}
\begin{document}
\somecmd{dummykey=\marginProportion}
\somecmd{dummykey=\marginProportion{}}
\end{document}
./numvar.aux)
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
0.76
0.76{}
[1{/usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./numvar.aux) )</usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts
/cm/cmr10.pfb>
Output written on numvar.pdf (1 page, 13994 bytes).
Transcript written on numvar.log.
\DeclareRobustCommand
不会扩展到0.76
所以这在这里是无用的,以及\newrobustcmd
从etoolbox
。