为了方便给学生展示Stata运行结果,尝试搭建一个支持StataR的Jupyter Notebook。

考虑到只使用32个学时,直接上Docker算了。结果碰到一些坑,记录一下以备后续查看。

Docker 镜像选择的问题

为了方便,选择使用 Jupyter Docker Stacks所提供的jupyter/minimal-notebook。结果遇到几个坑:

  1. 由于上游源的问题,环境变量里无法设置密码。只好将密码加入到启动命令里:
start-notebook.sh --NotebookApp.password=*****

中文字体问题

默认镜像并不支持中文字体,导出PDF时,所有的中文都变成了空白字符。因此需要手动添加中文支持。

  1. root权限进入docker
docker exec -it --user root Jupyter /bin/sh
  1. 安装中文字体
sudo apt update && sudo apt upgrade -y && sudo apt install fonts-wqy-microhei

可通过fc-list查看是否安装成功

3.修改 latex 模板 修改/opt/conda/share/jupyter/nbconvert/templates/latex/base.tex.j2文件。 在文档开头添加

    \setmainfont{WenQuanYi Micro Hei}
    \setsansfont{WenQuanYi Micro Hei}
    \setmonofont[Scale=0.9]{WenQuanYi Micro Hei Mono

可放置于 fPDFTeX 部分后面。

添加Stata支持

虽然Stata 17.0正式支持Python了,但是还是选择使用stata_kernel,因为看起来更直观。 具体安装回头再写。 注意要点 1, Stata 16 需要 libpng 12.0 的支持,然而需要额外安装 sudo apt install software-properties-common sudo add-apt-repository ppa:linuxuprising/libpng12 sudo apt update sudo apt install -y libpng12-0 2, 为了显示图片,使用svg 格式, 需要在notebook 里运行 %set graph_format svg 一次