跳转到主要内容

Python解决方案编写工具。

项目描述

solman

Solutions manual编写工具。尽管这个工具是用Python编写的,但用户不需要在编写解决方案时编写任何Python代码。相反,解决方案将作为单个markdown文件(.md)在具有意义的目录结构中单独编写。这个包的目的是将这些单独的解决方案转换为各种输出,包括单个LaTeX文件以及Pelican兼容的博客文章/网页。

测试结果: CircleCI

解决方案组

一个SolutionGroup代表一组相关的解决方案。问题解决方案必须通过子目录进行分组。每个问题解决方案都是一个单独的".md"文件,但SolutionGroup可以转换为单个LaTeX文件。练习解决方案文件以"ex-"前缀开始,问题解决方案以"prob-"前缀开始(在需要区分的情况下)。

解决方案组结构

一个SolutionGroup有几个重要的部分

  1. 章节 问题解决方案的分组层次,通常是文本中问题来源的章节或部分。
  2. 解决方案 可能包含LaTeX的markdown文件。每个文件代表一个问题的解决方案,允许问题之间进行最大程度的版本控制。
  3. 元数据 在目录结构顶部的一个YAML文件,包含相关的元数据字段。

具体来说,元数据文件必须包含以下字段

  • 作者 问题的作者
  • 书籍 问题的来源
  • 类别 分组的分类描述(例如,“数学”或“物理”)
  • 名称 分组的名称
  • 解决方案作者 解决方案的作者

元数据文件还可以包含以下可选字段

  • ISBN 文本来源的ISBN
  • 参考文献文件 包含参考文献的BibTeX文件,包括".bib"扩展名
  • 章节前缀 (默认"章节")- 章节标题的前缀
  • 解决方案日期 (默认datetime.date.today)- 解决方案的日期。只有当解决方案不再可能更改时才设置此值。
  • 子类别 对于该组的通用子类别标签,例如“线性代数”或“力学”
  • 标签 问题标签的逗号分隔列表

示例文件结构

下面的文件结构代表一个名为“demo”的解决方案集的示例,其中包含两个部分(1和2),每个部分都有1个练习解决方案和2个问题解决方案。注意问题解决方案前缀为"prob-",练习解决方案前缀为"ex-"。还要注意元文件位于目录顶部。BibTeX文件是可选的。

demo
├── 1
│   ├── ex-1.md
│   ├── prob-1.md
│   └── prob-2.md
├── 2
│   ├── ex-1.md
│   ├── prob-1.md
│   └── prob-2.md
├── meta.yml
└── references.bib

创建解决方案组

创建解决方案组很简单。一旦您有了符合上述标准的目录结构,将SolutionGroup.from_meta函数指向您的元文件,所有解决方案文件都将自动发现。假设在上面的示例中,“demo”文件夹位于主目录中(或“~”)。那么下面的代码就足以创建相关的SolutionGroup

>>> from solman import SolutionGroup
>>> s = SolutionGroup.from_meta("~/demo/meta.yaml")
>>> s.name
"SampleName"

将解决方案转换为LaTeX

解决方案组可以将所有解决方案编译成单个LaTeX文件。每个解决方案文件(.md)使用PanDoc [1] 从Markdown转换为LaTeX源。使用Jinja模板 [2] 将生成的LaTeX源片段合并。最后,使用latexmk(正确处理文档引用的构建,例如目录或参考文献)将其转换为PDF。SolutionGroup类有一个用于创建LaTeX文件的方法

>>> s.to_latex('~/sample.tex') # will output a combined LaTeX file

将解决方案转换为PDF

与将解决方案转换为LaTeX类似,将解决方案转换为PDF(通过先转换为LaTeX)只需调用SolutionGroup的"to_pdf"方法。

>>> s.to_pdf('~/sample.pdf') # will output a combined PDF file

参考文献

  1. https://pandoc.org/
  2. http://jinja.pocoo.org/docs/2.10/

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

solman-0.0.2.tar.gz (10.2 kB 查看哈希)

上传时间

构建分布

solman-0.0.2-py3-none-any.whl (13.2 kB 查看哈希)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面