Ubuntu下TexStudio如何兼容中文

怎么就想起来研究一下这个?

我使用大名鼎鼎的3Blue1Brown数学动画引擎Manim,制作了一个特别小的动画视频克里金插值。在视频中,绘制文字时,Manim使用到了texlive texlive-latex-extra这些库。专业的关系,当年的毕设没有使用过LaTex,不过它的大名还是听过的。于是视频做完后,好好研究了一下,发现这玩意书写文档,从美观度和数学公式录入的简易程度来说,简直是神器。

背景知识

LaTeX是什么不赘述了,他相当于是一个内核,往上有篇文章说的挺好,LaTeX之于Linux来说,他相当于Linux的内核,然后真正跟用户打交道的是Linux内核的各种发行版,比如Debian,Ubuntu红帽等等。LaTeX发型版也有很多,比如Tex Live,MacTex等等。但是这些发行版,一般都是命令行工具,而常见的具有语法高亮、自动补全、PDF预览等功能的应用软件,叫做LaTeX IED(软件开发中,叫做集成开发工具),是负责跟LaTeX发行版打交道的,常见的有TeXstudio,TeXworks等等。

我在我的工作电脑上,为了让Manim正常工作,是从深度软件仓库APT安装的texlive texlive-latex-extra,然后安装的TeXstudio,体验了LaTeX排版的强大和美观。但是我发现他是不支持渲染中文的,然后找了一圈,也不知道如何解决这个问题。最终,定位到要通过引入ctex包的形式,选择XeLaTex编译器或者LuaLaTex编译器才能正确处理中文。而ctex这个包,是要通过发行版的包管理器来实现的,从这里,我就开始犯难了。

如何安装CTEX

我从CTAN下载了ctex的包,仔细研读它的文档,文档上说最常见的 TEX 发行版(TEX Live 和 MiKTEX)已收录 CTEX 宏集及其依赖的宏包和宏集。如果本地安装 TEX Live 或 MiKTEX 不是完整版本,则可能需要通过这两个发行版提供的包管理器来安装宏包。实际上我当时还没理解TeXstudio和texlive的关系,总觉得从TeXstudio能安装ctex,或者,把我下载的ctex复制到某个目录,就能解决我的问题。然后文档上的那个tlmgr gui长这个样子:
在这里插入图片描述
点哪里哪里没反应,然后我运行tlmgr install ctex,它的提示是这样的:

(running on Debian, switching to user mode!)tlmgr: Remote repository is newer than local (2018 < 2024)
Cross release updates are only supported withupdate-tlmgr-latest(.sh/.exe) --update
Please see https://tug.org/texlive/upgrade.html for details.

我想这玩意不对啊,版本不对啥都不让我安装吗?遂作罢。

不过,我弄清了texlive的包管理工具是tlmgr

在Ubuntu上折腾了一番

我的Ubuntu是个干净的系统,我重新看了下TeXstudio的安装文档和texlive的安装文档。我用在线安装的方式,安装了texlive2024,这个过程比较长,大概7个G的东西,成功后,他提示我将texlive执行目录,设置到PATH中。我没有照做,而是从TeXstudio的官网,按照添加PPA的方式,进行了安装。按照我的预期,TeXstudio编译时,由于找不到没有texlive,一定会报错。

然而,当一切就绪后,TeXstudio能正常编译,只是依然显示不了中文。而且当我运行tlmgr install ctex时,它提示我texlive没有进行初始化云云,那一堆提示,我忘记截图了

我自行安装的texlive都没有加进PATH中,它还能工作,这是怎么回事?我心里一阵嘀咕。然后默默的运行了apt depends texstudio,突然就悟了,我通过PPA安装的TeXstudio,它自己处理的依赖,把必须的一些依赖,例如 texlive-basetexlive-latex-basetexlive-latex-recommended等自己安装了,所以跟他打交道的不是我安装的那个,是通过apt自己安装的。

知道了问题根源,那就先卸载了通过添加PPA安装的TeXstudio,然后通过apt auto remove的方式,卸载了texlive相关的依赖。检查了一下我自己安装的texlive,确认了tlmgr等程序都在,然后将其目录加入PATH中,通过tlmgr命令,检查ctex是不是想网上资料描述的那样,已经集成:
在这里插入图片描述
OK,确认完毕,万事具备。然后从TeXstudio下载其APPImage格式的执行文件,运行程序,在Help > Check LaTeX Installation中检查编译器,看看所在目录,确实是我自行安装的目录。然后在编辑区引入包名,输入中文,编译,搞定:

在这里插入图片描述
想想这一套东西还是挺不人性化的,按理说,安装了新包,TeXstudio应该能在快速向导里体现才好,然而并没有。然后我验证我办公电脑上textlive是否带有ctex(想想也不会,因为apt安装的,应该属于前述那种不是完整版本的情况),它竟然也是因为版本的问题二不告诉我。

软件的行为真是千差万别,叹。
在这里插入图片描述

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

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

相关文章

一个更难破解的加密算法 Bcrypt

BCrypt是由Niels Provos和David Mazires设计的密码哈希函数&#xff0c;他是基于Blowfish密码而来的&#xff0c;并于1999年在USENIX上提出。 除了加盐来抵御rainbow table 攻击之外&#xff0c;bcrypt的一个非常重要的特征就是自适应性&#xff0c;可以保证加密的速度在一个特…

linux学习:gcc编译

编译.c gcc hello.c -o hello 用gcc 这个工具编译 hello.c&#xff0c;并且使之生成一个二进制文件 hello。 其中 –o 的意义是 output&#xff0c;指明要生成的文件的名称&#xff0c;如果不写 –o hello 的话会生成默 认的一个 a.out 文件 获得 C 源程序经过预处理之后的文…

书生·浦语训练营二期第三次笔记-茴香豆:搭建你的 RAG 智能助理

RAG学习文档1&#xff1a; https://paragshah.medium.com/unlock-the-power-of-your-knowledge-base-with-openai-gpt-apis-db9a1138cac4 RAG学习文档2: https://blog.demir.io/hands-on-with-rag-step-by-step-guide-to-integrating-retrieval-augmented-generation-in-llms-a…

C#/.NET/.NET Core推荐学习书籍(24年4月更新,已分类)

前言 古人云&#xff1a;“书中自有黄金屋&#xff0c;书中自有颜如玉”&#xff0c;说明了书籍的重要性。作为程序员&#xff0c;我们需要不断学习以提升自己的核心竞争力。以下是一些优秀的C#/.NET/.NET Core相关学习书籍&#xff08;包含了C#、.NET、.NET Core、Linq、EF/E…

云原生安全当前的挑战与解决办法

云原生安全作为一种新兴的安全理念&#xff0c;不仅解决云计算普及带来的安全问题&#xff0c;更强调以原生的思维构建云上安全建设、部署与应用&#xff0c;推动安全与云计算深度融合。所以现在云原生安全在云安全领域越来受到重视&#xff0c;云安全厂商在这块的投入也是越来…

34-4 CSRF漏洞 - CSRF跨站点请求伪造

一、漏洞定义 CSRF(跨站请求伪造)是一种客户端攻击,又称为“一键式攻击”。该漏洞利用了Web应用程序与受害用户之间的信任关系,通过滥用同源策略,使受害者在不知情的情况下代表攻击者执行操作。与XSS攻击不同,XSS利用用户对特定网站的信任,而CSRF则利用了网站对用户网页…

HiveSQL如何生成连续日期剖析

HiveSQL如何生成连续日期剖析 情景假设&#xff1a; 有一结果表&#xff0c;表中有start_dt和end_dt两个字段&#xff0c;&#xff0c;想要根据开始和结束时间生成连续日期的多条数据&#xff0c;应该怎么做&#xff1f;直接上结果sql。&#xff08;为了便于演示和测试这里通过…

C++:MySQL的事务概念与使用(四)

1、事务的概念 定义&#xff1a;事务是构成单一逻辑工作单元的操作集合&#xff0c;要么完整的执行&#xff0c;要么完全不执行。无论发生何种情况&#xff0c;DBS必须保证事务能正确、完整的执行。 性质&#xff1a;事务的四大ACID性质。 原子性(Atomicity)&#xff1a;一个事…

2.网络编程-HTTP和HTTPS

目录 HTTP介绍 HTTP协议主要组成部分 GET 和 POST有什么区别 常见的 HTTP 状态码有哪些 http状态码100 HTTP1.1 和 HTTP1.0 的区别有哪些 HTTPS 和 HTTP 的区别是什么 HTTP2 和 HTTP1.1 的区别是什么 HTTP3 和 HTTP2 的区别是什么 HTTPS的请求过程 对称加密和非对称…

甘特图在生产进度管理中的应用

生产进度管理在生产制造过程中起着至关重要的作用。 它主要关注对生产进程的掌控和安排&#xff0c;确保生产活动能够按照预定的计划和时间顺利进行&#xff0c;以达到按时交付产品的目标。 在生产进度管理中&#xff0c;首先需要制定一个详细且合理的生产计划&#xff0c;明…

Advanced RAG 02:揭开 PDF 文档解析的神秘面纱

编者按&#xff1a; 自 2023 年以来&#xff0c;RAG 已成为基于 LLM 的人工智能系统中应用最为广泛的架构之一。由于诸多产品的关键功能&#xff08;如&#xff1a;领域智能问答、知识库构建等&#xff09;严重依赖RAG&#xff0c;优化其性能、提高检索效率和准确性迫在眉睫&am…

STM32智能家居小助手

​ 设计的目的 大部分家用电器开关仍旧是传统的机械式按键开关&#xff0c;原因是传统式的电器开关开发周期短&#xff0c;制作成本低&#xff0c;方案成熟&#xff0c;但是传统的遥控家电开关已经不能满足人们对家电控制的要求&#xff0c;传统的遥控器具有单一性&#xff0c;…

类脑计算芯片:机器学习的新硬件革命

热爱编程的小落… &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️ 零基础学Java——小白入门必备&#x1f525; 重识C语言——复习回顾&#x1f525; 计算机网络体系———深度详讲 HCIP数通工程师-刷题与实战&#x1f525;&#x1f525;&#x1f525; 微信小程序开发——…

初识Java中的NIO

1.概述 Java NIO 全称java non-blocking IO &#xff0c;是指 JDK 提供的新 API。从 JDK1.4 开始&#xff0c;Java 提供了一系列改进的输入/输出新特性&#xff0c;被统称为 NIO(即 New IO)&#xff0c;是同步非阻塞的。NIO采用内存映射文件的方式来处理输入输出&#xff0c;NI…

Linux Shell:`awk` 命令

Linux Shell&#xff1a;awk 命令 awk 是一种强大的文本分析工具&#xff0c;广泛用于文本处理、数据提取和报告生成。它使用自己的编程语言来处理文件中的数据。在 Linux Shell 中&#xff0c;awk 命令能够执行复杂的模式匹配、编辑和分析任务。本文将介绍 awk 的基础用法、高…

激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍

激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍 写在前面安装过程调试过程标定成功可视化展示 写在前面 激光雷达和相机联合标定工具 论文地址&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9564700 github地址: https://github.com…

系统架构评估_2.SAAM方法

SAAM&#xff08;Scenarios-based Architecture Analysis Method&#xff09;是卡耐基梅隆大学软件工程研究所&#xff08;SEI at CMU&#xff09;的Kazman等人于1983年提出的一种非功能质量属性的架构分析方法&#xff0c;是最早形成文档并得到广泛使用的软件架构分析方法。最…

RabbitMQ Docker 安装与应用

1.官方镜像 该镜像包含用户操作界面 2.Docker运行&#xff0c;并设置开机自启动 docker run -d --restartalways --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management 默认登录账户和密码 guest 3、使用 队列和交换机绑定

【CicadaPlayer】视频切换/音视频同时切换

G:\CDN\all_players\CicadaPlayer-github-0.44\mediaPlayer\SuperMediaPlayer.hCicadaPlayer https://github.com/alibaba/CicadaPlayer可以clone 整个仓库的历史 git clone --bare https://github.com/username/project.git整体架构 :根据这个更容易理解:切换就是judgeFunc…

zookeeper中的znode节点的一些功能和应用

zookeeper是一个挺好玩的东西 有着独特的选举机制&#xff0c;一般在中小型集群中&#xff0c;zookeeper一般装在三个节点 其中只有一个节点对外提供服务&#xff0c;处于leader状态&#xff0c;另外两台未follower状态 这得益于zookeeper独特的选举机制&#xff0c;可以保证le…