首页 > 其他分享 >manim边学边做--Code

manim边学边做--Code

时间:2024-07-16 08:56:24浏览次数:13  
标签:Code str language -- 代码 code background 边学边

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 main

import "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)

标签:Code,str,language,--,代码,code,background,边学边
From: https://www.cnblogs.com/wang_yb/p/18304450

相关文章

  • 1day 喰星云·数字化餐饮服务系统 多处 SQL注入漏洞
    0x01阅读须知        技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者......
  • yolov5 上手
    0介绍YOLO(YouOnlyLookOnce)是一种流行的物体检测和图像分割模型,由华盛顿大学的约瑟夫-雷德蒙(JosephRedmon)和阿里-法哈迪(AliFarhadi)开发。YOLO于2015年推出,因其高速度和高精确度而迅速受到欢迎。YOLOv5在YOLOv4的基础上进一步提高了模型的性能,并增加了超参数......
  • C语言 ——— 浮点数类型 在 内存中 的 存储模式
    浮点数存储规则根据国际标准IEEE754(电气和电子工程协会)规定:任意一个浮点数F的二进制都可以表示成以下形式:科学计数法(-1)^S*M*2^E解析科学计数法: 1.解析:(-1)^S(-1)^S 表示的是浮点数F的符号位当S=0时,原式=(-1)^0= 1,此时的 1就表示浮点数F为......
  • 墨烯的C语言技术栈-C语言基础-012
    数组要存储1-100的数字,怎么存储?C语言中给数组的定义:一组相同类型元素的集合数组定义intarr[10]={1,2,3,4,5,6,7,8,9,10};//定义一个整型数组,最多放10个元素intmain(){ //0-9都是整数 intarr[10]={10,11,12,13,14,15,16,17,18,19};//arr是数组名 [......
  • 【C语言】位操作符详解 - 《开心消消乐》
    目录1.介绍2.位操作符列表3.按位操作符详解3.1按位与(&)示例输出3.2按位或(|)示例输出3.3按位异或(^)示例输出3.4按位取反(~)示例输出按位取反操作符(~)示例输出按位取反操作符详细解释3.5左移(<<)示例输出3.6右移(>>)示例输出4.应用实例4.1使用位掩码示例输出4.2......
  • 过滤器和拦截器以及监听器
    过滤器(Filter)1过滤器是Web应用中的一个组件,它能够对客户端和服务器之间的请求(Request)和响应(Response)进行拦截和处理2过滤器基于函数回调机制,依赖于Servlet容器3过滤器可以对几乎所有的请求起作用,可以在请求到达Servlet之前或响应发送给客户端之后对请求和响应进行加工处理......
  • 22 SAP前台操作手册-MM模块-采购管理-采购日常查询报表(SAP标准)
    0总体说明SAP实施项目中,到了第3个阶段-系统实现,在这个阶段,因为蓝图汇报已经结束,配置也差不多完成了,自开发还在进行中,SAP标准功能下,可以进行基础业务的前台操作了,在实现阶段的尾端,客户指定的关键用户(俗称KU-KeyUser)会进行前台业务操作和练习,提高熟练程度,同时需要在外部SAP顾......
  • 信创学习笔记(三),信创之操作系统OS思维导图
    创作不易只因热爱!!热衷分享,一起成长!“你的鼓励就是我努力付出的动力”title!!#f1c232点击上方蓝色小字即可一键关注!!!!#f1c232创作不易只因热爱!!:::primary!18热衷分享,一起成长!:::^**你好呀,我是卫码士。一个医信行业工程师,喜欢学习,喜欢搞机,喜欢......
  • Ubuntu20.04 部署 ORB SLAM2 并运行
    安装基础库sudoaptupdatesudoaptinstallcmakegccg++gitsudoaptinstallpkg-config创建源码目录在home目录下新建repos文件夹用于存放源码。cd~mkdirrepos安装eigen33.2.10安装eigen3.2.10版本。cd~/reposgitclonehttps://gitlab.com/libeige......
  • 基于Qlearning强化学习的小车弧线轨迹行驶控制matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下(完整代码运行后无水印):  2.算法涉及理论知识概要        Q-learning是一种离散时间强化学习算法,无需模型即可直接从环境中学习最优策略。当应用于小车弧线轨迹行驶控制时,其核心任务是让小车自主学习如何控制转向和速度,以在......