simple_ConTeXt
安全测试
详细信息
安装
- 总数 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
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(