用于MMT表面语法的Pygments插件(lexer&style)
mmtpygments的Python项目详细描述
| GitHub Repo| Collection of rendered codes
mmtpygents:MMT表面语法的Pygments插件
为了支持来自MMT project的MMT Surface Syntax的语法高亮显示,这个包是一个Pygments插件,包括
- Pygments lexer(
mmt
) - 推荐的Pygments样式(
mmtdefault
) - 并实验性地为MMT关系数据(
mmtrel
)设计了一个Pygments lexer。在
呈现代码的集合:click here屏幕截图:(点击查看实时版本)
安装
- 在
通过Pip(简单)
在pip install Pygments mmtpygments
- 在
通过
pipenv
或其他优于Pip的Python包管理器:- 在
在您的项目目录中运行
在pipenv install pygments mmtpygments
,例如,包含您要在其中使用它的LaTeX文件 - 在
记住从现在起始终在那个虚拟环境上下文中使用
mmtpygments
:在pipenv shell
中运行您想要的命令例如,如果您想在LaTeX中使用它并将TeXStudio用作IDE,请从该shell中启动TeXStudio。在
在
这样,你就不会把你的整个电脑和Pip包和更重要的是,你在步骤(2.1)中生成的
在Pipfile.lock
文件中记录了Pip包的版本。在 - 在
使用
CLI
^{pr2}$这告诉Pygments使用HTML格式化程序(-f
)、MMT lexer(-l
),并使用mmtdefault
呈现的mmtdefault
样式(-O
)输出一个完整的HTML文件到test.html
(-o
)。在
乳胶(含薄荷)
minted是一个以Pygments为后端呈现代码的乳胶包。在
% !TeX encoding = UTF-8% !TEX TS-program = latexmk -xelatex -shell-escape -silent -latexoption="-synctex=1 -8bit" %%% ^^^ This is the build command. Install latexmk if you don't have it already.% You may choose an alternative LaTeX derivative, e.g. LuaLaTeX, but be warned that it must support Unicode!\documentclass{article}\usepackage{fontspec}% Download GNU Unifont from http://unifoundry.com/unifont/index.html% And save it, say, as "fonts/unifont-12.1.03.ttf"\newfontfamily\unifont{unifont-12.1.03.ttf}[Path=./fonts/,NFSSFamily=unifont] % Disable caching for debugging purposes (increases compilation times!)\usepackage[cache=false]{minted}\setminted{fontfamily=unifont,tabsize=2,breaklines=true}\newminted[mmtcode]{mmt}{}\newmintinline[mmtinline]{mmt}{}\newmintedfile[mmtfile]{mmt}{}\begin{document}% Variant 1: Code given in LaTeX, rendered in display mode\begin{mmtcode} theory MyTheory = c : type ❘ # abc ❙❚ \end{mmtcode}% Variant 2: Code given in LaTeX, rendered inline% You can use any delimiter you like, here we use /\mmtinline/theory MyTheory = c : type ❘ # abc ❙❚/ % Variant 3: Code given externally in file, rendered in display mode% \mmtfile{your-mmt-file.mmt}\end{document}
LaTeX Beamer:对帧嵌入代码使用fragile
选项:\begin{frame}[fragile] ... \end{frame}
有关如何自定义它的详细信息,请参阅minted manual。在
常见错误:呈现的PDF显示源的制表符
如果您在MMT源代码中突出显示字符,并且它们显示在XeLaTeX呈现的PDF中,那么您将面临一个已知的XeLaTeX错误([1],[2])。它可以通过将-8bit
传递给XeLaTeX来解决。在
发展
- 安装pipenv,它提供了一个一致的Python、pip和包环境,锁定在提交的
Pipfile
和Pipfile.lock
文件中。在 pipenv install
git submodule init
git submodule update
测试
cd mmtpygments/test
pipenv run python test.py ./
(失败时返回非零退出代码)- 在浏览器中打开
index.html
,可以直观地看到故障(红色矩形)。在
这个^{mmtpygments/test/data
中的MMT文件,然后在该文件上运行所提供的lexer和Pygment的HtmlFormatter。呈现的版本写在原始的*.mmt
文件旁边,扩展名为.html
。此外,生成index.html
和{
Travis构建自动运行^{gh-pages
分支上,请参见https://comfreek.github.io/mmtpygments/,尤其是{a19}。在
开发工作流
对于修补和测试lexer,建议使用与上述相同的测试基础设施。即使Travis构建在lexing错误时失败,^{
出版
发布是在主分支上的标记提交后通过.travis.yml自动完成的。为了那件事
- 本地提交所有更改。在
- 创建一个新的版本标记:
git tag -a vx.y.z -m "Version x.y.z, see CHANGELOG.md"
(标记名需要以v
开头,并为Travis CI指定一个数字,请参见^{} ) - 按下commit和标记:
git push && git push --tags
不推荐:如果由于任何原因确实必须手动发布版本,请执行以下操作:
# Packaging $ pipenv run python setup.py sdist bdist_wheel # Checking if packages are okay (PyPi server will do the same) $ pipenv run twine check dist/* # Upload to Test PyPi repository $ pipenv run twine upload --repository-url https://test.pypi.org/legacy/ dist/* # Upload to real PyPi repository $ pipenv run twine upload dist/*
对于未来的维护人员:在存储库移动的情况下进行必要的更改
如果您希望将此存储库或其分支托管到其他位置,则必须在以下位置进行更改:
README.md
:将引用https://ComFreek.github.io/mmtpygments
下的任何内容的所有链接更改为在其中部署东西的URI。在.travis.yml
:- 将运行
python test.py
的基路径更改为宿主URI。在 - 将under deploy/pypi中的secret值更改为可以发布pypi包的另一个pypi令牌。在
- 将运行
- 项目
标签: