拓冰建站拓冰建站
首页 / 资讯中心 / 正文

SymPy 项目标识指南:官方 Logo 的来源、生成脚本与文档构建集成

SymPy 项目标识指南官方 Logo 的来源、生成脚本与文档构建集成【免费下载链接】sympyA computer algebra system written in pure Python项目地址: https://gitcode.com/GitHub_Trending/sy/sympy本篇技术指南围绕 SymPy 官方的项目标识Logo文档展开讲清楚官方 Logo 有哪几种形态、如何通过make logo一键生成全套 PNG/ICO 资源以及背后的generate_logos.py脚本如何解析 SVG 源文件、调用外部工具完成格式转换。读完之后你可以为论文、课件或演示文稿正确选取 SymPy 标识并能按自己的需求定制 Logo 的尺寸、裁切版本与输出格式。一、官方 Logo 的形态与选用原则SymPy 的 Logo 文档doc/src/guides/logo.rst明确了 Logo 的使用场景学术论文、课程材料与演示文稿中引用 SymPy 项目标识。官方提供的 Logo 集合按两个维度划分出多个版本是否带蛇尾tail完整 Logo 包含一条环绕的蛇形尾部no tail 版本去掉了这条尾部是否带 SymPy 文字完整版本在图形右侧带有 SymPy 字样的文字no text 版本只保留纯图形。文档中给出了一条明确的选用建议除非 SymPy 名称已在别处单独出现否则应优先使用带文字版本text version以避免读者把图形和文字割裂理解。Logo 的矢量源文件是 doc/src/logo/sympy.svg位图版本包括 doc/src/_static/sympylogo.png文档 HTML 版头图和 doc/src/_static/sympylogo_big.pngLaTeX 版标题页图。文档中展示的sympy-500px.png、sympy-notext-500px.png等 PNG 则是生成流程的产物存放在doc/_build/logo/构建目录中。二、SVG 源文件的结构与真实来源理解 Logo 的生成原理首先要理解源 SVG 的组织方式。从 doc/src/logo/sympy.svg 的结构看根元素带有idsvg_SympyLogo内部按语义划分为若干命名分组这正是后续脚本能够精准裁切 Logo 的基础g idSympyLogo整个 Logo 的顶层分组脚本通过修改它的transform属性实现位移重排g idSymPy_text承载 SymPy 文字的分组隐藏该分组即可得到无文字版本g idSnakeTail蛇尾分组同样可通过displaynone隐藏。关于这份 SVG 的血统doc/src/logo/info.txt 记录了关键信息真正的源文件其实是 doc/src/logo/sympy-use-text.svg其中的 SymPy 是真实文本节点而仓库中使用的sympy.svg是经过 Inkscape text to path文本转路径处理后的版本——文字被转换成了矢量路径因此不依赖字体环境就能被正确渲染与裁切。文档同时给出了重建流程的前提需要先安装 Computer Modern 字体在 Inkscape 中打开sympy-use-text.svg全选Ctrl-A后执行 Shift-Ctrl-C对象转路径再另存为sympy.svg。三、一键生成make logo的完整流程Logo 文档给出的最快生成路径是先安装文档构建所需依赖参见 构建文档指南然后执行$ cd doc $ make logo # will be stored in the _build/logo subdirectory这行命令会使用你本地 SymPy 副本中的sympy.svg生成 Logo全部产物存放在doc/_build/logo/子目录。从 doc/Makefile 的源码看logo目标的实现非常简洁logo: $(BUILDDIR)/logo/*.png $(BUILDDIR)/logo/*.png: $(SOURCEDIR)/logo/sympy.svg mkdir -p $(BUILDDIR)/logo $(PYTHON) ./generate_logos.py -d echo echo Logo generated.也就是说Makefile 并没有自己做图像转换而是创建输出目录后带-ddebug参数调用 doc/generate_logos.py 脚本由它完成全部工作。Windows 用户则有对应的批处理入口 doc/make.bat其内部同样是mkdir _build\logo加python ./generate_logos.py -d的组合。前置依赖脚本依赖两个外部命令行工具在脚本文件头部的 Requirements 注释中有明确声明依赖工具用途发行版包rsvg-convertSVG 转 PNGlibrsvg2-binImageMagickconvert/magick生成 favicon 格式的.icoimagemagick在 Debian/Ubuntu 上仓库提供了 doc/aptinstall.sh 一键安装脚本其中包含了librsvg2-bin与imagemagick这两个 Logo 生成所必需的包Python 侧依赖则通过pip install -r doc/requirements.txt安装。四、generate_logos.py脚本详解doc/generate_logos.py 是整套 Logo 资源的生成核心。它默认从doc/src/logo/sympy.svg读取源文件输出到doc/_build/logo/并围绕两个概念工作版本version与格式format。4.1 三个裁切版本及其几何参数脚本用svg_sizes字典定义了三种变体每一组参数控制了对应分组是否隐藏、Logo 整体如何平移、以及输出画布的尺寸版本键输出前缀隐藏蛇尾隐藏文字平移 (dx, dy)画布尺寸notailnotail是否(-70, -20)690notail-notextnotailtext是是(-70, 60)690notextnotext否是(-7, 90)750生成 SVG 变体的核心逻辑在generate_notail_notext_versions函数中脚本用xml.dom.minidom解析源 SVG通过自定义的searchElementById函数递归查找SnakeTail、SymPy_text、SympyLogo、svg_SympyLogo四个命名元素然后对需要隐藏的元素设置displaynone给SympyLogo分组写入transformtranslate(dx,dy)把裁掉部件后留下的空白补齐重写根 SVG 的width/height为新的画布尺寸并更新title与desc在描述中追加 This file is generated from %s ! 的来源标注。这解释了为什么notail与notext的平移参数不同去掉蛇尾后视觉重心偏下去掉文字后则偏左两种情况需要不同的补偿位移。4.2 命令行参数一览脚本基于argparse提供完整可定制的参数见 doc/generate_logos.py 中parser.add_argument段参数作用默认值--source-dir源 SVG 所在目录doc/src/logo--source-svg源 SVG 文件名sympy.svg--svg仅生成无尾/无文字的 SVG 变体关--png生成 PNG 版本关--ico生成 favicon 格式的 ICO 版本关-a/--all等价于--svg --png --ico --clear开默认全量生成-s/--sizesPNG 输出边长列表逗号分隔的像素值160,500--icon-sizes嵌入 favicon 的图标边长列表16,32,48,64--output-dir输出目录doc/_build/logo--clear清除临时文件关-d/--debug打印调试日志关注意-a/--all的默认值就是True所以直接运行python generate_logos.py即生成全部 SVG、PNG 与 ICO 资源make logo调用时额外加-d便于排错。4.3 格式转换的底层调用链PNG 转换convert_to_png脚本首先探测rsvg-convert是否可用返回码 127 时直接报错提示 Install librsvg。随后对完整 Logo 三个变体逐一执行rsvg-convert 源.svg -f png -o 输出-边长px.png -h 边长 -w 边长默认--sizes 160,500意味着每个 Logo 版本都会产出 160px 与 500px 两种方形 PNG最终形成sympy-500px.png、sympy-notext-500px.png、sympy-notailtext-160px.png这样的文件矩阵——文档页面上展示的 500px 版本正是其中之一。ICO 转换convert_to_icofavicon 生成是两步走。第一步复用上文的convert_to_png按--icon-sizes默认 16,32,48,64先生成对应像素的 PNG第二步把这些 PNG 交给 ImageMagick 合并为单个.icoconvert 16px.png 32px.png 48px.png 64px.png 名称-favicon.ico一个平台差异值得注意脚本用platform.system()判断操作系统Linux/macOS 上调用convertWindows 上调用magickImageMagick 7 的命名且在 Windows 下改用os.chdir 输出重定向的方式组织相对路径。五、Logo 在 SymPy 文档构建中的实际应用生成的 Logo 并不是孤立的静态资源而是被文档构建流程直接消费的产物HTML 文档doc/src/conf.py 中配置了html_logo _static/sympylogo.png与latex_logo _static/sympylogo_big.png同时html_favicon ../_build/logo/sympy-notailtext-favicon.ico—— 即每个 HTML 页面的浏览器标签页图标用的正是generate_logos.py生成的无尾无文字版 favicon。构建依赖在 doc/Makefile 中_html目标显式依赖于$(BUILDDIR)/logo/sympy-notailtext-favicon.icolatex目标也依赖logo。这意味着构建文档或 LaTeX 版前会自动触发 Logo 生成保证 favicon 与页眉图始终新鲜可用。页面呈现构建完成的 HTML 文档首页页眉展示带文字的sympylogo.png恰好印证了 Logo 文档优先使用带文字版本的原则——因为页面本身不会在图形旁重复 SymPy 名称。六、许可条款最后Logo 文档明确了版权边界所有 Logo 的许可与 SymPy 本身一致均为 BSD 许可。这一点也与源文件内的desc声明相呼应sympy.svg内注明作者 Fredrik Johansson 允许 on the same terms as the rest of Sympys code and documentation 自由使用。具体条款可查阅仓库根目录的 LICENSE 文件。因此在论文、课件或产品中使用这些 Logo 时只要遵循 BSD 许可的归属要求即可。小结官方 Logo 以 doc/src/logo/sympy.svg 为矢量源真实设计源是带文本节点的sympy-use-text.svg经 Inkscape 文本转路径得到cd doc make logo是最简生成入口Windows 下用 doc/make.bat产物统一落在doc/_build/logo/需要定制尺寸或单独输出某种格式时直接运行python doc/generate_logos.py并组合--svg/--png/--ico、-s/--sizes、--icon-sizes、--output-dir等参数依赖rsvg-convertlibrsvg2-bin与 ImageMagickDebian/Ubuntu 可用 doc/aptinstall.sh 一键装好全部 Logo 遵循与 SymPy 相同的 BSD 许可。【免费下载链接】sympyA computer algebra system written in pure Python项目地址: https://gitcode.com/GitHub_Trending/sy/sympy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门