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

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例