ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

simple_ConTeXt

lawrencebell ST3 已移除

安全测试

详细信息

  • 0.7.10
  • github.com
  • github.com
  • 3年前
  • 3年前
  • 7年前

安装

  • 总数 497
  • Win 227
  • Mac 128
  • Linux 142
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

README

源代码
raw.githubusercontent.com

Simple ConTeXt

内容介绍 安装/设置 参考文献引用 文件链接 命令 构建器 键值自动完成 设置 脚本 代码片段 未来特性 简介 此Sublime Text 3插件提供了一些使用ConTeXt程序的支持。

我开始这个项目是为了个人使用,因为我希望用Sublime Text写ConTeXt文档时有更好的生活质量特性。由于没有适合的软件包,我开始自己编写。随着时间的推移,我觉得结果看起来相当不错,所以我把它发布到世界上,希望对其他ConTeXt用户有所帮助。

话虽如此,我只能测试在我的机器上事物是否可行,因此可以预见到一些错误。此外,我只有这么多的空闲时间来工作,这是一个爱好项目。不要期望有一个强大、精致的经验!

当前的功能包括

语法文件(多个);构建器;命令自动完成;命令弹出窗口;参考文献处理;参考文献处理;各种代码片段;其他杂项。(我应该说明的是,我只使用ConTeXt MkIV,因此该软件包仅为MkIV设计和测试。换句话说,如果MkII的内容有效,那就是一个意外的快乐。话虽如此,语法文件应该能为MkII完美工作,并且我猜测其他部分相对简单,可以按需进行必要地调整。

此外,ConTeXt的多语言界面是我没有考虑到的。我只知道英文界面,并且带着这个概念工作;同时支持所有不同界面似乎对我来说是一项相当艰巨的任务!)

安装/设置 通过包控制工具安装,命名为 simple_ConTeXt。 (或者,您也可以直接将仓库克隆到 Sublime Text (ST) 的包目录中。)之后,还有一些可选的设置。

ConTeXt 作为旁注,要安装/更新 ConTeXt 本身,建议您在此处查看 ConTeXt 维基百科中的通用说明。特别是,要在所谓的独立/最小化安装中设置,还有一个非常有价值的页面。

构建者 为了让构建者工作,它需要在您的机器上找到 context 程序(或 mtxrun)。如果您只安装了一个版本的 context 并将其添加到环境 PATH 变量中,那么您不需要做任何事情。

否则,您应该告诉 simple ConTeXt context 的位置。为此,通过命令面板或菜单栏中的“首选项”▶“包设置”▶simple_ConTeXt▶“设置”打开 simple ConTeXt 设置文件。在 program_locations.ConTeXt_paths 键下,为您的机器上的 ConTeXt 安装输入键值项:键是安装的方便名称,值应该是 context 程序的路径。例如:如果您的 context 程序位于 C:/Users/Foo/context/tex/texmf-win64/bin(因此 ConTeXt 安装树的根位于 C:/Users/Foo/context/),则应写入类似以下内容:

{ “program_locations.ConTeXt_paths”: { “example”: “C:/Users/Foo/context/tex/texmf-win64/bin” } } 如果您安装了多个版本的 ConTeXt(例如,几个不同的 TeX Live 版本和 ConTeXt Standalone),则可以为每个版本放置名称-路径项,并且它们可以和谐共存。

现在,当您要构建一个 ConTeXt 文件时,构建器会通过咨询当前当前的路径设置值来查找您想要的 ConTeXt 版本,该设置值应该是 program_locations.ConTeXt_paths 字典中的一个键的名称(如上例中的 example)。为了快速在不同的 ConTeXt 版本之间切换,您可以使用快速设置命令。

此外,还有一些选项(您可以根据需要检查设置)来控制构建者的函数以及要报告的输出。

PDFs 在构建 ConTeXt 文件后打开 PDF,将咨询 current.PDF/viewer 条目。它应该是 program_locations.PDF_viewers 中一个键的名称。

同样,program_locations.PDF_viewers 中的键可以是任何字符串,但每个值应该是 PDF 查看器程序的名称。(例如,如果 Sumatra PDF 查看器在您的环境路径中,则这可以只是 sumatraPDF,否则是显式路径,例如 C:/Program Files/SumatraPDF/SumatraPDF。)

自动完成 为了在输入初始反斜杠 . 时获得 ConTeXt 命令的自动完成,请在您的通用 ST 设置中添加以下条目。

{ “auto_complete_triggers”: [ { “characters”: “\\”, “selector”: “text.tex.context” } ] } 校对 考虑将以下内容添加到您的 ConTeXt 语法特定的设置中。(您可以通过命令面板或菜单栏中的“首选项”▶“设置”▶“语法特定的”访问这些设置,只要当前活动视图具有 ConTeXt 语法。)

{ “spell_check”: true, “spelling_selector”: “text.tex.context - (meta.control-word.context, meta.environment.math.context, meta.brackets.context, source, markup.raw, comment)” } 这应该能够相当好地将拼写检查限制在正确的地方(例如,不在数学或代码块中)。

括号突出显示 如果您使用了出色的 BracketHighlighter(BH)包,那么将以下内容添加到 BH 设置将为 ConTeXt 开头/结束命令提供一些支持。

{ “user_brackets”: [ { “name”: “context_env”, “open”: “(\\(?:start[a-zA-Z]|bT[A-Z]+[a-zA-Z]))”, “close”: “(\\(?:stop[a-zA-Z]|eT[A-Z]+[a-zA-Z]))”, “style”: “alt_tag”, “scope_exclude”: [“- meta.structure”], “language_filter”: “whitelist”, “language_list”: [“ConTeXt”], “plugin_library”: “simple_ConTeXt.bracket_highlighter.context_environments”, “enabled”: true } ], “user_bracket_styles”: { “alt_tag”: { “icon”: “tag”, “color”: “keyword.control” } } } 此处指向的文件 context_environments.py 在 plugin_library 键下简单地检查开始和结束标记是否匹配。

本包中包含一个名为 bracket_highlighter/metapost_settings.json 的文件,由于篇幅原因这里省略,但该文件展示了获取 BH 高亮 MetaPost/MetaFun '括号' 的基本设置。

接口文件 TODO:对此进行一些讨论。

参考项 我们支持参考项,这得益于 ConTeXt 语法文件的驱动。因此我们知道哪些事物是参考项,因为语法文件中有规则告诉我们。尽管一些常见情况已得到关注,但仍有少数情况尚未处理。例如,\placefigure 不起作用(它有复杂的语法),但 \startplacefigure 可以按预期工作。)为了说明这一观点,假设你的文档如下:

\starttext \startplaceformula[reference={eq:pythag}] \startformula a2 + b2 = c2 \stopformula \stopplaceformula

Lorem ipsum … \stoptext 如果你输入 \in{equation}[, 例如,那么会弹出一个快速面板,显示文件中所有的参考项(在这种情况下就是 eq:pythag)。选择一个条目可以自动输入它。

你可以通过设置 current.references/on 完全开启或关闭此功能。要将新的参考项命令(除了内置的 \in 和其他命令之外)添加到系统中(例如 \eqref),可以使用 current.references/command_regex。

引用项 我们为引用项提供一些支持,采用新 MkIV 风格。参考手册《Bibliographies: The ConTeXt Way》(即 mkiv-publications.pdf)。(关于如何使用信息,请参阅手册)。我们可以解析传统的 BibTeX 格式的文献数据库:鉴于其普及性,这是必须的。在实践中这样做可能会有挑战;我们尽量保持宽容。

此外,ConTeXt 使用 Lua 和 XML 作为备选数据格式的功能对我而言非常有趣,因此我确保也支持它们。(当然了,Lua 确实是一种功能强大的配置语言,就像 Dhall 一样,在力量和安全之间取得了更好的平衡。尽管如此,使用 Lua 还是很有趣的。)

旁白 关于使用 BibTeX 数据库的话题,我建议阅读上述关于 ConTeXt 中参考手册的手册,特别是如果你来自 LaTeX:有一些区别需要了解。例如,.bib 文件中的 Unicode 默认不使用转义,因此建议直接写入 Unicode 字符。此外,无需特别关注大小写:直接写你想要的即可。

示例 作为快速介绍/示例,假设文件 example.bib 看起来如下:

@book{whatever, title = {Foo Bar}, author = {A. U. Thor}, year = {2000}, } 和在同一目录中有一个如下所示的 ConTeXt 文件。

\usebtxdataset[example.bib] \starttext Lorem ipsum dolor sit amet, … \stoptext 如果在这个文件中输入 \cite[,那么会弹出一个快速面板,列出 example.bib 中的所有条目(在这种情况下是单独的书籍 'Foo Bar')。从列表中选择条目然后输入与之关联的标签。

可以使用设置 current.citations/on 来开启或关闭此功能。要控制快速面板中显示的信息,可以设置 current.citations/format。它的默认值如下。

{ “current.citations/format”: [ “{title}”, “{author}”, “{category}, {year}, {tag}” ] } 双括号 {…} 表示一个参考文献字段名称。或者你可以传递一个字符串,使用序列 <> 来指示新行的开始。因此,前面的设置可以这样等效地指定。

{ “current.citations/format”: “{title}<>{author}<>{category}, {year}, {tag}” } 为了展示其他格式,以下是一个等效的 example.lua 示例

return { whatever = { category = “book”, title = “Foo Bar”, author = “A. U. Thor”, year = “2000”, } } 最后,这是以 example.xml 格式呈现的相同数据的样例。

Foo Bar A. U. Thor 2000 文件链接 某些命令涉及另一个文件(例如 \input),对于其中一些,我们可以生成指向该文件的链接。例如,考虑下面的文档

\environment example-style \usebtxdataset[samples.bib] \starttext \input knuth \stoptext 悬停在 example-style、samples.bib 和 knuth 上将生成指向相应文件的链接。

关于链接的确切指向:我们尝试在文件树中(更准确地说:我们查看其所在的目录以及所有子目录和父目录)找到该文件,如果失败,我们询问 context(也就是说,mtxrun)是否可以在 TeX 树中找到该文件。在这个过程中,我们考虑典型的扩展名,所以当我们查找 knuth 时,我们也会查找 knuth.tex。

您可以通过设置 current.file_links/on 开启或关闭此功能。

命令自动补全 如果您告诉 ST 如本节所述执行,则在键入反斜杠 \ 时,将出现所有已知命令名称的列表,以及指示每个命令所需参数数目的指示器。

补全应该与其他功能良好地协同工作,例如 UnicodeCompletion 包提供的补全。 (UnicodeCompletion 使用 LaTeX 命令名称,但即使如此,我也认为它在 ConTeXt 中很有用,因为其中大多数命令名称都是兼容的。)

弹出 当您键入完整的命令名称,例如 \setupfittingpage,或者当您悬停在一个完整的命令名称上时,将出现一个弹出窗口。它们看起来像这样

1 2 \setupfittingpage […,…] [..,.=..,.] OPT

1 NAME

2 command = …#1 margin = 页 marginstate = start stop paper = auto 默认 NAME scale = 数值 inherits: \setupframed

page-app.mkiv 格式化应该相当直观。几点注意事项

这里的 OPT 是指“可选参数”。默认值由下划线表示(此处未显示)。大写值(例如 NUMBER)指示您可以传递该类型的值(一个“数字”)。像 …#1 这样的值表示您可以传递需要一些参数的命令。 (所以 …#1 表示一个带有一个参数的命令,…#1#2 表示一个带有两个参数的命令,依此类推)。例如,您可以编写 \overstrike 来传递一个带有一个参数的命令。(这是一个 ConTeXt 内置的命令,它会在 ~类似这样~ 的东西上划掉文字)。有时存在inherits: … 值,表示此选项继承该命令的选项。一些参数接受任何“字符串”作为值;我们用 {…}(此处未显示,因为 \setupfittingpage 没有这样的参数)来表示这一点。最后,可以在定义命令的文件名(此处为 page-app.mkiv)旁边看到一个链接。有一些设置选项可以调整它们的外观,并且您可以通过在/hovering 时键入/悬停在设置 current.pop_ups/methods/on_modified 和 current.pop_ups/methods/on_hover 上来切换是否显示它们。

构建器 正常构建器 主要构建器当然是 ConTeXt 中的一个,这是一个围绕 context 可执行文件的包装。为了找到 context,它咨询了在设置中指定的路径。

因为它相对容易做到,所以还有一些其他的构建器

Lua(使用 LuaTeX 作为 Lua 解释器);MetaPost。这里有两种变体:首先,使用 ConTeXt 安装中提供的 mpost 版本。或者,使用 context 本身:当对一个 MetaPost 文件进行调用时,它将使用 MetaFun 格式编译它(生成 PDF)。这两个都依赖于设置 current.path 来找到相关程序。

保存即构建 存在一个自动构建功能:我不确定它有多有用,如果你喜欢,可以试试。可以通过将current.builder/auto/on设置为true来启用此功能。然后,每次保存ConTeXt文件(即在ST中有'ConTeXt'语法的视图)时,我们将运行ConTeXt构建器。

与此相关的有几个选项,都以字符串current.builder/auto/开始。特别值得注意的是current.builder/auto/extra_opts_for_ConTeXt,您可以使用它将不同的选项传递给手动构建器的context进程。我想象的使用场景是:假设您有一些构建速度较慢的图形,在起草文档时您希望跳过。然后您可以设置

{ “current.builder/auto/extra_opts_for_ConTeXt”: { “mode”: { “draft”: true } } } 并且在文档中使用类似于 \doifmodeelse 的命令来有条件地执行某些代码

\doifmodeelse {draft} {快速分支 …} {慢速分支 …}(目前我们只是在默认选项的基础上传递任何额外的选项;也许我们应该考虑将它们合并。)

命令行 如果你喜欢在命令行上工作,那么我推荐使用神奇的Terminus包在Sublime Text中集成终端。

键/值自动补全 我们添加了一个自动补全功能,可以使用选项current.option_completions/on来开启或关闭。例如,假设你输入了 \setuphead[c。如果你已开启此选项,那么你会看到一个建议选项的列表弹出:撰写本文时,建议的选项包括at time of writing I am suggested the options catcodes、color、command、commandafter、commandbefore、continue、conversion 和 coupling。

这由一个简单的算法提供:给定一个命令\foo,建议\foo所具有的任何键值选项,以及(以递归方式)\foo继承的任何键值命令的键。

我们不尝试跟踪哪些参数采用键值选项,哪些不采用:相反,我们只是始终建议键。这不是理想的,但做得更好的话会更复杂。因此,目前我们在可用性和误报之间做出了某种妥协:即便如此,我认为这是目前良好的权衡。

设置 快速设置 在命令面板中有一个名为simple_ConTeXt的命令:快速更改设置。它会弹出一个交互式菜单,供浏览和修改当前设置。有些事情(例如添加新设置)需要通过打开传统的ST设置来实现,但特别是对于修改现有选项,此命令可以节省大量时间。

手动 如果您需要手动编辑设置,则可以通过以下方式完成:在命令面板中通过偏好设置:simple_ConTeXt设置,或在菜单栏中选择偏好设置▶包设置▶simple_ConTeXt▶设置。所有选项在默认设置文件中都有一些文档说明。

注意的是,已考虑到与其他包的自动完成/弹出功能友好。

脚本 我们提供了一个命令simple_ConTeXt:在ST面板中运行ConTeXt脚本。这是一个简单的命令行包装,环境路径已修改以包含设置中当前选择的ConTeXt二进制文件的路径(名为current.path)。它还扩展了默认的ST变量(例如$FILE)。(请注意,它目前非常基础,只是等待脚本完成,然后报告结果。此外,如果脚本出现某种错误,该命令可能会卡住;因此,目前它相当脆弱。)

如果您在一台机器上有多个ConTeXt安装,这将是一个便利之处,因为它会为您设置PATH。然后您可以进行类似的操作

mtxrun –generate –force 重新生成simple ConTeXt当前活动的ConTeXt版本文件数据库(通常需要几秒钟),并且

mtxrun –script font –list –pattern=latinmodern –all 来查找所有ConTeXt知道的Latin Modern字体。

剪贴片段 ConTeXt(以及一些MetaPost的)有各种剪贴片段。您可以通过在ConTeXt文件中命令调色板中键入“片段”来找到这些片段,但这里是一个快速总结。

样例,类似于内置的剪贴片段 lorem。这些是:bryson,carey,carrol,darwin,davis,dawkins,douglas,greenfield,hawking,jojomayer,khatt,klein,knuth,linden,montgomery,reich,sapolsky,thuan,tufte,waltham,ward,weisman,和 zapf。章节/部分/节等的标题:chap,part,title,sec,sub,sec2,sub2,sec3 和 sub3。对于项目组:items 和 item。对于标记:bf,em,emph,it 和 sl。对于表格:tabn,tabln,tabu 和 tabx。对于数学:align,form,forma,pform,pforma 和 math。对于Lua:lua,ctx 和 lmx。对于项目/模块:mod,comp,env 和 prod。对于放置事物:place,pfig 和 ptab。其他:start,text,doc 和 page。设计好的、通用的剪贴片段有点棘手。这些都是一个混合包,关于这些我会说(以我的观点)

形(及其变体)相当方便;start 频繁地有用;这些样本使得快速搭建一些假的词汇变得简单;表格片段包括不同语法的提醒,考虑到ConTeXt有众多的表格机制,这可能是有用的;标记片段还有待提高。未来特性 一些希望得到的功能。当然,我们可以继续想象添加/改进的功能。

以与ST的引号、括号相同的方式处理 $,即作为分隔符。(我认为这是我们唯一这样做的事情。)使智能设置事物更加智能/功能更强(即在其中添加更多功能)。设置模块文件链接以便它们可以工作。允许 current.citations/format 成为字符串列表而不是单个字符串,并记录此选项。在文献方面,添加一种命令,类似于‘强制重新解析文献数据库’。另外添加一种浏览当前文献条目的方式(除了输入 \cite[),并考虑如何处理多引用(我的意思是通过\cite[foo,bar]一次性引用多个条目)。也许我们可以把构建文库名单的过程提取成一个单独的ST命令。我认为这是一个合理的设计,可以让我们完成我们想要的任何事情。现在我想起来,这种设计模式为我们提供了在不同ST API部分之间共享数据的有感方式——这是我们很久以前就想得到的东西,我认为我们可以用这种方法进行一些重构。那么,我们应该如何获取数据,因为 run((不返回任何内容……设置当前视图的某些设置?我想这里是界面生成器,我们可以做一些简化。比如可选参数)。此外,我们可以将常见参数提取出来,比如一个“where”子句。当存在重复两次或多次的大参数时,这会很好,尽管这也将对内部操作产生重大变化。在这个问题上,我们可以整理一些事情,例如在JSON文件中使用默认值。扩展键=值自动完成功能以包括值建议。添加对多文件文档的支持。我不会经常做这个,所以我不确定它应该是什么样子。让构建者找出主文件?还有什么其他有用的东西?添加对语法\start[foo] … \stop的有效支持,作为\startfoo … \stopfoo的合法替代。这又是我不会使用的东西,这是一个合理的想法吗?实现打开PDF后返回ST的焦点选项。SyncTeX支持。(前进和后退跳转到PDF。)ConTeXt中SyncTeX的情况如何?代码格式化器。(ST语法引擎已经执行了解析ConTeXt文件的工作,相当详细。这应该可以使基本的自动格式化变得相对容易。我希望尽可能不侵入性,只格式化我们确定有意义的部分。)扩展命令自动完成/弹出系统,以允许用户自定义命令。最简单的方法可能是定义成ConTeXt接口文件使用的.xml风格。修复文档浏览器。我在邮件列表上看到一些关于使用类似 mtxrun –launch cld-mkiv.pdf 打开文档的讨论,这对这会很有帮助。检查器/代码静态分析工具。(mxrun –script check提供的检查相当基本,我上次检查的时候是这样的。我不知道chktex对ConTeXt的支持有多好,似乎主要针对LaTeX。)恢复幽灵错误功能。单词计数。(在有普遍性的情况下,可能很有用,但相当棘手。)以合适的方式处理\unprotect … \protect。