首页 > 其他分享 >为了生成latex如何在sympy中自定义向量函数?适用于自定义类的latex生成。

为了生成latex如何在sympy中自定义向量函数?适用于自定义类的latex生成。

时间:2024-01-26 21:23:42浏览次数:26  
标签:Function latex 自定义 expr BoldUndefinedFunction 生成 print

在sympy.printing.Printer的_print函数中可以看到一个hook,使得对于每一个类都会尝试寻找对应的_print_{class}函数来处理,因此我们只要利用好这个hook就可以为自定义类创建latex生成逻辑,我试图创建了一个_print_BoldUndefinedFunction函数,但发现它捕获不到(其实是因为BoldUndefinedFunction被包在了一个Function中,cls是Function),所以将_print_Function重写并判断其中的func是否为BoldUndefinedFunction即可。

# to represent a vector of functions as a whole
class BoldUndefinedFunction(UndefinedFunction):
    pass


# Define a custom latex printer for the BoldUndefinedFunction
class CustomLatexPrinter(LatexPrinter):
    def _print_Function(self, expr, exp=None):
        if isinstance(expr.func, BoldUndefinedFunction):
            return r'\mathbf{{{}}}\left({}\right)'.format(self._print(expr.func),
                                                          ','.join(str(arg) for arg in expr.args))
        else:
            return super()._print_Function(expr, exp)


# use this latex instead of latex() in sympy to get bold function latex.
def latex(expr):
    printer = CustomLatexPrinter()
    return printer.doprint(expr)


class BoldFunction(Function):
    nargs = None

    def __new__(cls, *args, **kwargs):
        return BoldUndefinedFunction(args[0])

标签:Function,latex,自定义,expr,BoldUndefinedFunction,生成,print
From: https://www.cnblogs.com/myendless/p/17990738

相关文章

  • 最小生成树模板
    最小生成树\(n\)个点用\(n-1\)条边连接成一个连通块,形成的图形只可能是树一个有\(n\)个点的连通图,边一定是大于等于\(n-1\)条的。图的最小生成树,就是在这些边中选择\(n-1\)条出来,连接所有的\(n\)个点。这\(n-1\)条边的边权之和是所有方案中最小的。Prim算法适用......
  • WPF,ListView中的Item自定义靠左还是靠右
    Item中有属性来决定是左还是右,难点在于如何将ItemTemplate扩充占满整个宽度,这样子当界面缩放的时候,Item靠左或靠右也能随着移动,其实主要是下面的代码,设置ListViewItem的HorizontalContentAlignment属性为Stretch,铺满整个宽度,示例代码如下:<ListViewx:Name="LvmqttMsg"Ba......
  • 记windows自定义bat脚本自启动
    自定义Windows启动脚本简化版在本指南中,我们将使用一个简化的批处理文件(.bat)来演示如何创建自定义的Windows启动脚本。以下是一个基本的模板,您只需根据需要在:begin部分添加您的代码。 @echooffif"%1"=="h"gotobeginrem获取脚本路径set"scriptPath=%~dp0"......
  • Flutter3 TV 一百行自定义实现 tabbar tabview 联动
    系统自带的tabbar焦点在TV端无法很好的使用使用card_swiper组件作为tabviewimport'package:card_swiper/card_swiper.dart';import'package:flutter/material.dart';voidmain()=>runApp(MyApp());classMyAppextendsStatefulWidget{constMyApp({su......
  • kubeadm生成集群时指定所有证书过期时间为99年
    使用kubeadm初始化Kubernetes集群时生成99年有效期的所有证书,可以通过以下步骤操作:编辑kubeadm的配置文件kubeadm-config.yaml:apiVersion:kubeadm.k8s.io/v1beta2kind:ClusterConfigurationapiServer:extraArgs:certificate-duration:868320hcertifica......
  • 华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力
    本文分享自华为云社区《华为云CCETurbo:基于eBPF的用户自定义多粒度网络监控能力》,作者:云容器大未来。基于eBPF的容器监控的兴起容器具有极致弹性、标准运行时、易于部署等优点,越来越多的客户选择使用容器来部署自己的服务,随着容器规模越来越大,容器间网络交互也越来越复杂。我们需......
  • 生成nginx证书
    生成NginxSSL证书的基本步骤如下:准备证书签发请求文件(CSR--即证书签名申请(CertificateSigningRequest)):opensslreq-new-nodes-sha256-newkeyrsa:2048-keyoutserver.key-outserver.csrOrganizationName:公司名称,可以是中文或英文。OrganizationalUnitName:部门......
  • # 生成指定列名行索引的空表格 # 修改字典内不同表格的值
    #生成指定列名行索引的空表格#修改字典内不同表格的值importpandasaspdlist1=['列1','列2','列3']#列名列表list2=['行1','行2','行3']#行索引列表df=pd.DataFrame(columns=list1,index=list2)#1dic={key:dffork......
  • 【译】生成考古学:人工智能创建古代世界的真实图像
    原作:Ming引子:历史令人着迷,但很难想象几千年前的世界是什么样子。 许多方面造成了这一困难。部分原因是古代人有不同的审美观。在1400年代之前,画家很少考虑透视,使得事物的比例在现代人看来相当奇怪。部分原因是时间已经腐蚀掉了文物中的很多细节。陶器、雕塑和建筑物随着时间......
  • python中利用变量解压列表、元组、字符串、字典、文件对象、迭代器和生成器等序列
    一、如果知道序列中元素的个数,可以直接进行变量赋值。coords=(102,40)lon,lat=coordsprint(lon)print(lat)text="news"a,b,c,d=textprint(a)print(b)print(c)print(d)二、如果不知道序列中元素的个数,可以通过*变量名来代表多个元素的变量,无论序列是什......