我对在Stata中编写ado文件相对较新,遇到了一个我无法找到解决方案的问题。
我希望在我的程序中有一个选项,允许使用任何twoway
选项(请参阅help twoway_options
)并在使用带有空格或子命令的引号时遇到问题演示如下。
sysuse gnp96, clear
capture prog drop adding_quotes
prog def adding_quotes
syntax [, tw_opts(string)]
line gnp96 date, `tw_opts'
end
// throws error
adding_quotes, tw_opts(text(7000 97 "Middle Text"))
adding_quotes, tw_opts(xtitle(" "))
// runs
adding_quotes, tw_opts(text(7000 97 `""Middle Text""'))
adding_quotes, tw_opts(xtitle(""))
我还要注意,取消syntax
命令也可以解决问题,但我宁愿保留它,也不必解析整个命令。
是否可以更改syntax
命令,以便抛出错误的两个命令有效?
答案 0 :(得分:0)
两条建议和评论:
1)您希望允许任何twoway
选项,您将传递给图形命令。最简单的方法是在*
中使用通配符syntax
,让syntax
(在这种情况下为twoway
)完成所有工作。
sysuse gnp96, clear
capture prog drop adding_quotes
prog def adding_quotes
syntax [, * ]
line gnp96 date, `options'
end
adding_quotes, text(7000 97 "Middle Text")
adding_quotes, xtitle(" ")
2)如上所述,xlabel(" ")
电话无论如何都是非法的。你可能会受到其他地方术语的影响,想到Stata将轴标题称为轴标签。对于Stata,轴标签是单独的文本标签,默认情况下位于轴上各个数字位置的twoway
。
3)在指定选项参数为string asis
的其他问题中,禁止删除双引号。