Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者: 陈卓然 (中山大学岭南学院)
邮箱: chenzhr25@mail2.sysu.edu.cn
编者按: 本文部分摘译自下文以及连老师的 Stata2Latex 讲义,特此致谢!
Source:
目录
(Green 1989; Green and Petre 1996)指出代码高亮可以增强人们对于代码结构的感知,同时也可以提高代码的可读性 (Hendrix et al. 1998; Cross et al. 1999). 传统上在
采用 LaTeX 中的 Verbatim
环境,需要在导言部分引入 fancyvrb
宏包包,命令为\usepackage{fancyvrb}
。
这可以允许你插入任意软件的代码,譬如说我想将调入 1988 年美国妇女工资的资料并做一些描述性统计分析的 Stata 代码写入 Latex 中,就可以采用如下的代码 (当然前提是要先导入 fancyvrb
的包,加入的两个选项分别表示给代码行编号,然后给代码标红):
\begin{Verbatim}[numbers=left, formatcom=\color{red}]
*----------------------
*-1.3.2 命令的适用范围 [if] [in]
help operator //运算符
sysuse "nlsw88", clear
sum in 10/20 // 第10至第20个观察值之间的观察值
sum wage in -5/-1 // 倒数...
sum wage hours if race == 1 // 等于
sum wage if race ~= 3 // 不等于
sum wage if (race==2)&(married==1) // 且
sum wage if (race==3)|(married==0) // 或
winsor2 wage hours // 外部命令
lianxh DID
\end{Verbatim}
实现效果如下
上述结果虽然可以做到给代码块加上颜色,但是依然无法做到区分出代码,注释,以及代码中的不同命令等功能。
安装 stata 宏包的方法可参见连老师的讲义 Stata与LaTeX的完美结合| 连享会主页 (lianxh.cn)。完成之后,为了呈现 Stata 源码,只需将 Stata 代码放在 stlog
环境中即可。不妨仍以上述代码作为例子:
\begin{stlog}
*----------------------
*-1.3.2 命令的适用范围 [if] [in]
help operator //运算符
sysuse "nlsw88", clear
sum in 10/20 // 第10至第20个观察值之间的观察值
sum wage in -5/-1 // 倒数...
sum wage hours if race == 1 // 等于
sum wage if race ~= 3 // 不等于
sum wage if (race==2)&(married==1) // 且
sum wage if (race==3)|(married==0) // 或
winsor2 wage hours // 外部命令
lianxh DID
\end{stlog}
实现效果和 Verbatim
结果类似,
可见 stlog
不能将代码块高亮出来,也无法做到区分注释、命令以及选项的功能。
针对上述问题,statax
包便应运而生了。statax
包可以高亮 HTML 和
statax
包是放置在 github-statax, 在 Stata 中可以使用 github
命令来安装
github install haghish/statax
但是这种安装方法有时可能会受限于网络,因此大家如果无法采用这种方式顺利安装的话,可以手动从上述网站上下载,然后将statax的tex文件和你想要编译的文件放在同一个文件夹下面即可实现statax的功能。
我们可以使用 \include
或者 \input
的命令来调入statax. 本质上 Statax.tex
就是写在另外一份tex文件中的 Latex 代码,注意 \input
和\include
是有区别的,具体体现在如下几点,详细内容请参见Latex之input{}与include{}:
\include{}
中的参数不需要加 .tex
的扩展名,而 \input{}
可以加.tex
扩展名,也可以不加。\include{}
可以在之前和之后使用 \clearpage
另起新页,同时将文件内容贴到 \include{}
的位置,而 \input{}
只是将文件的内容复制到\input{}
所在位置,并不需要其他多余的操作。\include{}
只可以用在文档区,不可用在导言区,同时也不可以递归调用,而 \input
可以递归调用。在成功调入Statax.tex
之后,就可以把想要高亮的 Stata 源码放在 statax
的环境中即可,仍然以上述代码为例:
\begin{statax}
*----------------------
*-1.3.2 命令的适用范围 [if] [in]
help operator //运算符
sysuse "nlsw88", clear
sum in 10/20 // 第10至第20个观察值之间的观察值
sum wage in -5/-1 // 倒数...
sum wage hours if race == 1 // 等于
sum wage if race ~= 3 // 不等于
sum wage if (race==2)&(married==1) // 且
sum wage if (race==3)|(married==0) // 或
winsor2 wage hours // 外部命令
lianxh DID
\end{statax}
实现效果如下:
和前面的 Verbatim
以及 stlog
命令对比,statax
命令下的 Stata 代码显得更加清晰易读,命令和注释都以不同的颜色体现出来。
除了上述 Wrangler 类之外,我们还可以人为设定代码块高亮颜色,比如采用Sunset类颜色,就可以实现如下的效果
为实现此效果只需修改 Statax 中的颜色设定的代码,作者在github 仓库中提供了四种类型的颜色,除了上述的 Sunset 和 Wrangler 之外, 还有一种常规的白底模式,实现效果如下:
以及一种 Daring 类(黑底)的,实现效果如下
此外连老师还提供了一种颜色可供大家选择
除了 statax
之外,listings
也是一个很不错的宏包,首先需要导入 listings
宏包:\usepackage{listings}
。紧接着定义可能用到的颜色,之后要对 listings
代码块进行设置:
\lstset{% listings 代码块设置
language=tex, % 设置语言
%basicstyle=\ttfamily\fontsize{9pt},% %\footnotesize
basicstyle=\ttfamily\footnotesize,%
columns=fixed,
numbers=left,numberstyle=\Tiny % 在左侧显示行号
backgroundcolor=\color[RGB]{245,245,244}, % 设定背景颜色
keywordstyle=\color[RGB]{40,40,255}, % 设定关键字颜色
numberstyle=\footnotesize\color{darkgray}, % 设定行号格式
commentstyle=\it\color[RGB]{0,96,96}, % 设置代码注释的格式
stringstyle=\rmfamily\slshape\color[RGB]{128,0,0}, % 设置字符串格式
showstringspaces=false, % 不显示字符串中的空格
%frame=none,
frame=shadowbox, % 显示背景边框;不显示用none
%framerule=0pt,
backgroundcolor=\color{white}, % 背景颜色
rulesepcolor=\color{red!20!green!20!blue!20}, % 阴影颜色
%Stata 关键词设定
morekeywords={use,regress,reg,sum,display,dis},
emph={clear}, emphstyle=\color{CPPViolet},
}
接下来可以通过在 stata-lstlisting.tex
中添加更多的关键词。当然不要忘记使用 \input{stata-lstlisting.tex}
来调用stata-lstlisting.tex
代码。
在上述的设定工作全部完成之后,我们就可以把自己想要编译的 Stata 代码放在lstlisting
环境中编译了,譬如:
{\setmainfont{Courier New Bold} % 设置代码字体
\begin{lstlisting}[language=Stata, numbers=none] % 设置编译的代码语言以及去除代码行索引编号
. display binomialp(4, 2, 1/6)
.11574074
. regress exp age ownrent income incomesq
use auto, clear // 导入数据
reg price wei
* 更复杂的情形
/* 另一个评论*/
bysort rep78: reg price wei `controls' i.foreign, vce(robust)
dis "Stata 语法高亮设置"
\end{lstlisting}}
就可以实现如下效果:
本文介绍了一些在Latex中高亮 Stata 代码的一些方法,并对比了他们各自的优劣。正如本推文开篇所言,代码高亮可以增强人们对于代码的可读性,从而节省大量的时间,提高工作学习的效率。大家不妨选择其中一种自己喜欢的方法,来给自己的 Stata 代码穿上一件漂亮的衣裳吧。
Haghish, E. F. 2019. "On the importance of syntax coloring for teaching statistics." The Stata Journal 19 (1): 83-86. -PDF-
Green, T. R. G. 1989. Cognitive dimensions of notations. People and Computers V:443–460. -PDF-
Green, T. R. G., and M. Petre. 1996. Usability analysis of visual programming environments: A ‘cognitive dimensions’ framework. Journal of Visual Languages & Computing 7: 131–174. -PDF-
Hendrix, T. D., J. H. Cross, II, L. A. Barowski, and K. S. Mathias. 1998. Providing enhanced visual support for software development and maintenance. In Proceedings of the 36th Annual Southeast Regional Conference. -PDF-
Cross, J. H., T. D. Hendrix, K. S. Mathias, and L. A. Barowski. 1999. Software visualization and measurement in software engineering education: An experience report. In Proceedings of the 29th Annual Frontiers in Education Conference. -PDF-
Note:产生如下推文列表的 Stata 命令为:
lianxh latex
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh