manim边学边做--Code

news/2024/11/17 8:28:54/文章来源:https://www.cnblogs.com/wang_yb/p/18304450

Code这个模块比较特殊,是专门用来显示代码用的。
平时如何制作数学动画的话,这个模块是用不着的,除非你想做一些编程方面的教学。
image.png
Codemanim各个模块中的位置大致如上图中所示。

1. 主要参数

Code模块是用来显示代码的,所以,如果你也写过代码的话,
会发现它的很多参数相当于代码编辑器上的一些显示设置。

参数名称 类型 说明
file_name str 代码文件路径
code str 字符串形式的代码
tab_width int 制表符对应的空格数
line_spacing float 行间距
font_size float 字体大小
font str 字体
stroke_width float 字体线条粗细
margin float 文本与背景的内边距
indentation_chars str 缩进的字符,可指定空格或制表符
background str 背景的类型
background_stroke_width float 背景的线条粗细
background_stroke_color str 背景的线条颜色
corner_radius float 背景圆角的半径
insert_line_no bool 是否插入行号
line_no_from int 行号开始的数字
line_no_buff float 行号与代码的距离
style str 显示代码的样式
language str 代码的语言
generate_html_file bool 是否生成代码高亮的html文件
warn_missing_font bool 字体缺失时是否警告提示

file_namecode只有一个有效,如果参数有file_name,那么就从文件中读取代码,
否则直接将code字符串作为代码显示。

参数style表示代码以何种样式显示,通过下面的代码可以查看支持哪些style

from manim import *print(Code.styles_list)
## 输出结果
['default', 'emacs', 'friendly','friendly_grayscale', 'colorful','autumn', 'murphy', 'manni','material', 'monokai', 'perldoc','pastie', 'borland', 'trac', 'native', 'fruity','bw', 'vim', 'vs','tango', 'rrt', 'xcode','igor', 'paraiso-light','paraiso-dark', 'lovelace', 'algol', 'algol_nu', 'arduino', 'rainbow_dash', 'abap', 'solarized-dark','solarized-light', 'sas', 'staroffice','stata', 'stata-light', 'stata-dark','inkpot', 'zenburn', 'gruvbox-dark','gruvbox-light', 'dracula', 'one-dark','lilypond', 'nord', 'nord-darker', 'github-dark']

内置支持的样式还不少。

参数background只有两种值可选:rectanglewindow
参数language表示支持高亮显示的代码语言,常用的语言pyjavagoccpp等等都支持。

2. 使用示例

下面演示一些在动画中展示代码常用的参数。

2.1. 高亮不同语言

Code模块支持的语言很多,这里只尝试了几种。

# python 代码
s = """def hello(s):print(f"Hello {s}!")hello("Manim")"""
Code(code=s, language="python")# go 代码
s = """package mainimport "fmt"func main() {fmt.Println("Hello, Manim!")
}"""
Code(code=s, language="go")# c 代码
s = """#include <stdio.h>
int main()
{printf("Hello, World!");return 0;
}"""
code = Code(code=s, language="c")

out.gif

2.2. 不同显示风格

参数style设置不同的代码显示风格。

s = """def hello(s):print(f"Hello {s}!")hello("Manim")"""# vim 风格
code = Code(code=s,language="python",style="vim",
)# emacs 风格
code = Code(code=s,language="python",style="emacs",
)# github 风格
code = Code(code=s,language="python",style="github-dark",
)

out.gif

2.3. 代码背景

代码的背景主要涉及backgroundbackground_stroke_widthbackground_stroke_colorcorner_radius等几个参数。

s = """def hello(s):print(f"Hello {s}!")hello("Manim")"""# 红色边框,边框加粗
code = Code(code=s,language="python",background="rectangle",background_stroke_color=RED,background_stroke_width=2,
)# 红色绿色,圆角半径增大
code = Code(code=s,language="python",background="window",background_stroke_color=GREEN,corner_radius=1,
)

out.gif

2.4. 导出html文件

Code模块还可以将代码导出到html

s = """def hello(s):print(f"Hello {s}!")hello("Manim")"""Code(code=s,language="python",generate_html_file=True,
)

执行之后,导出的html文件位于项目目录下的assets\codes\generated_html_files文件夹中。
image.png

3. 附件

文中完整的代码放在网盘中了(code.py),
下载地址: 完整代码 (访问密码: 6872)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744508.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot+vue前后端分离项目-项目搭建12-批量删除

1. 改造vue/src/views/Book.vue 【1】增加批量删除按钮,table列表里第一列为多选 【2】增加ids,存储选择的数据id数组 【3】handleSelectionChange方法用来多选后将数据id存储到ids中,deleteBatch方法是点击批量删除按钮时调用后台的批量删除功能 2. 改造com/example/demo/c…

Python 入门之悦目的 Pythonic(四)封装约定

# 免责声明:本文内容主要是肥清大神的视频以及自己收集学习内容的整理笔记,目是主要是为了让博主这样的老白能更好的学习编程,如有侵权,请联系博主进行删除。10. 封装的故事 # 封装在面向对象开发里是最基础的一环* 传统的开发会遇到不注重封装的情况* 对这类的 legacy 的代…

springboot+vue前后端分离项目-项目搭建11-1对多查询

一、1对多查询 1. 增加mapper/User.xml文件,文件内容如下,book表增加user_id字段与user表的id匹配2.com/example/demo/mapper/UserMapper.java接口增加如下方法与User.xml对应 3. 优化User和Book实体类 4. 优化com/example/demo/controller/UserController.java,改造findPag…

将传统应用带入浏览器的开源先锋「GitHub 热点速览」

现代浏览器已经不再是简单的浏览网页的工具,其潜能正在通过技术不断地被挖掘和扩展。得益于 WebAssembly 等技术的出现,让浏览器能够以接近原生的速度执行非 JavaScript 语言编写的程序,从而打开了浏览器的“潘多拉魔盒”。现代浏览器已经不再是简单的浏览网页的工具,其潜能…

springboot+vue前后端分离项目-项目搭建11-1对多查询、批量删除

一、1对多查询 1. 增加mapper/User.xml文件,文件内容如下 2.com/example/demo/mapper/UserMapper.java接口增加如下方法与User.xml对应 3. 优化User和Book实体类 4. 优化com/example/demo/controller/UserController.java,改造findPage方法 5. 改造vue/src/views/User.vue 【…

《Programming from the Ground Up》阅读笔记:p49-p74

《Programming from the Ground Up》学习第3天,p49-p74总结,总计26页。 一、技术总结 1.function (1)定义 p49, Functions are unit of code that do a defined piece of work on specified types of data。 函数是在指定类型的数据上完成所定义的某个工作的代码单元。 (2)pa…

关于css选择器和样式表的应用

我已经将 #usual-links.card {background-color: red; }复制到样式表index.css,并且已经在模板中引入样式表,如:<!--最后引入自定义的css。因为引入css的顺序会影响相同元素的样式呈现--><link rel="stylesheet" href="{% static css/index.css %}&…

IEC104初学者教程,第四章:IEC 104 开发环境搭建

第四章:IEC 104 开发环境搭建 目录第四章:IEC 104 开发环境搭建IEC104从站模拟器的使用IEC104主站模拟器的使用 为了搭建开发环境,我们需要准备三款软件:主站下载地址:IEC104主站模拟器 从站下载地址:IEC104从站模拟器IEC104主站模拟器代表主站(客户端、上位机)负责和从…

nginx小经验:nginx: worker process is shutting down

民间艺术团保安队副队长关注IP属地: 北京 2022.12.14 15:34:14字数 80阅读 1,038 image.png如上图所示:nginx -s reload 之后,新的请求已不会往老的进程转发,一直有连接未断开的老进程一直已“nginx: worker process is shutting down”状态存在 解决办法:1、手动杀掉进程2…

【C++】map

1、定义 template<class Key,class T,class Compare = std::less<Key>,class Allocator = std::allocator<std::pair<const Key, T>> > class map;namespace pmr {template<class Key,class T,class Compare = std::less<Key>> using map …

读人工智能全传14有意识的机器之路

读人工智能全传14有意识的机器之路1. 有意识的机器之路 1.1. 近年来人工智能和深度学习方面取得了真实的、令人兴奋的突破,但它们并不是构建通用人工智能的法宝 1.2. 深度学习可能是通用人工智能的一个重要组成部分,但它绝不是唯一的组成部分 1.3. …

[BSidesCF 2019]SVGMagic 1

SVG注入 xxe攻击打开后发发现他是SVG上传,在这之前我没有接触过SVG是什么,先去学习了一下发现他是xml注入的一种方法,也是通过js代码实现文件读取的 这是几个我看的关于svg的文章 https://www.freebuf.com/vuls/175451.html https://blog.csdn.net/gxyzlxf/article/details/…