jupyter notebook转换成LaTeX代码后,生成的pdf中不含In或者Out标识

2023-11-28 08:59

本文主要是介绍jupyter notebook转换成LaTeX代码后,生成的pdf中不含In或者Out标识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近,在用Jupyter notebook写一些带解释说明性的Python语言教程,同时需要生成pdf格式文件。我利用pandoc将.ipynb转换成了 LaTeX \LaTeX LATEX代码,利用这些代码,我个性化自己需要的书籍模板(documentclass 为book)。之所以这样做,是因为由Jupyter notebook直接转成的pdf,好多地方不符合我的要求,包括标题、日期等,况且是article模板。转成 LaTeX \LaTeX LATEX代码后,我可以按我自己的风格写,高度的灵活性。我也挺佩服Jupyter notebook的设计者们,能给出那么多灵活的接口,包括 LaTeX \LaTeX LATEX。解决了好多问题后,但是还是遇到了一个问题。在此值得记录如下。

问题描述

在Jupyter notebook中,Python代码和其代码的输出有明显的区分,分别带有In、Out标识,如下图:
Jupyter notebook中代码标识
但是,利用由同一.ipynb文件转成的 LaTeX \LaTeX LATEX代码,进而利用TexLive生成的pdf文件内容中,却不含In、Out标识了,如下图:
由LaTeX生成的pdf中不含In、Out标识
这是一个我想解决的问题。搜了搜国内外的相关技术论坛,没有结果,找不到与我一样遇到这个问题的人。没办法,只能自己动脑筋,自己解决问题了。

解决思路和过程

这只能从 LaTeX \LaTeX LATEX的代码上解决问题。我使用了 LaTeX \LaTeX LATEX好多年,无论是基础的利用已有的模板撰写上,还是高级的设计一个模板上,都涉猎和深入过。我有信心解决该问题。

首先需要找到产生不带In、Out标识的 LaTeX \LaTeX LATEX代码

这很好定位,相信用过 LaTeX \LaTeX LATEX的人,都能做到,与产生输出[3]相对应的代码如下:

\prompt{Out}{outcolor}{3}{\boxspacing}

很显然,上面是一条普通的 LaTeX \LaTeX LATEX代码,其中第1个参数明显带有Out字样。那为什么没显示出来呢?只能从命令\prompt的定义找起。该命令的定义,也是由Jupyter notebook转换而来。我们也能很容易找到定义该命令的代码,如下:

\newcommand{\prompt}[4]{{\ttfamily\llap{{\color{#2}[#3]:\hspace{3pt}#4}}\vspace{-\baselineskip}}}

请大家花些功夫了解\newcommand的用法,它是一个定义命令的命令。上述代码定义的命令\prompt有四个参数,但在命令的定义体中却只使用了后面三个参数,第一个参数没有使用,而最上面代码中的Out正好处在第一个参数的位置。找到病因了。

解决方案

由上面分析可知,既然定义\prompt时,第1参数没用上,且第1个参数的内容正好是我需要的In、Out标识,那么我在定义\prompt时,将第1个参数使用上不就可以了吗。
更改后的定义\prompt的代码如下:

\newcommand{\prompt}[4]{{\ttfamily\llap{{\color{#2}#1 [#3]:\hspace{3pt}#4}}\vspace{-\baselineskip}}}

重新编译 LaTeX \LaTeX LATEX,生成的结果如下图:
生成了带有标识的结果
可以看出,我已成功解决了该问题。

感悟

之前,我自己也有疑问,学那么多深入的 LaTeX \LaTeX LATEX到底有什么用。今天遇到的问题,让我明白,之前学的知识,还真能用上。知识先尽可能多地学,因为指不定哪一天就用上了,用上后,能让自己有满满的成就感。

尤其是软件工程类的知识,还是要尽可能多地学。许多学生问,我在教科书上学的东西,为什么在工作岗位的项目上没用上?我的回答是,1)你自己水平太低,实际用上了却不知;2)你的项目太水。

这篇关于jupyter notebook转换成LaTeX代码后,生成的pdf中不含In或者Out标识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/429422

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断