Stata ado语法,带双引号

时间:2017-05-11 22:37:09

标签: stata

我对在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命令,以便抛出错误的两个命令有效?

1 个答案:

答案 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的其他问题中,禁止删除双引号。