latex 加粗_LaTeX 里「添加程序代码」的完美解决方案

40561319ea68834ffb663b97e7d0103b.png

坑边闲话:如何在 Word 里添加代码片段呢?这个可以通过 VBA 编程实现,加上某些可以导出 HTML 格式的源码编辑器,基本无缝操作。但是 Word 插入代码并自动更新,真的是让人非常恼火,写完这篇文章,我再回看 Word 中插入代码,简直是地狱般的操作,虽然小代码量不难,也能借助某些操作能做得很好,但是终究不够优雅。那么,

能做到吗?如果能的话,如何在
里面添加源代码并完美呈现呢?

1. 为什么需要在

里面添加源码

有很多时候,我们需要让自己的源代码作为附录写在文章里,比如你的学位论文,再比如你的实验报告。这些时候你单纯写结论上去不是很合适,别人没有你的代码是很难评价你的实验真实性的。

所以源代码必须要有。

1.1 最终PDF里面的源代码应该是什么样子的呢

我个人认为,应该至少满足如下效果:

  1. 代码高亮,而且高亮的颜色可以自己设置;
  2. 代码要使用等宽字体
  3. 字间距也要跟编辑器里的完全一致,我添加几个空格,你就呈现几个空格,自动调节字间距的行为坚决不允许;
  4. 可以支持 include 导入源代码

关于 1~3 很好解释,那就是我们要求 PDF 里的代码片段看起来和公式编辑器里的一模一样。第 4 条可能有人不理解,我在这里解释一下。如果你的论文已经写好,只差粘贴代码进去就搞定,那么你绝对不需要第四条;但是,一旦你觉得有个地方不太对,那你需要在源码里修改,然后再把修改过来的黏贴进来,这就很难受了!你需要找到对应的修改地方,而且手工很难保证自己

里的代码和工程里的代码完全一致!

2. 终极解决方案

这里我们采用时下比较火热的 Python 进行演示。

有个叫做
listings的宏包专门解决代码展示问题!用了这个库之后,你的代码至少可以做到如图 1 所示的样子。

e76e7913814f92924ca179bc5bdd62a7.png

图 1 最终的效果。字体严格等宽,代码有自动高亮。

在这里要想到到上面的效果,需要这种命令:

usepackage{listings}
usepackage{ctex}

% 用来设置附录中代码的样式

lstset{
    basicstyle          =   sffamily,          % 基本代码风格
    keywordstyle        =   bfseries,          % 关键字风格
    commentstyle        =   rmfamilyitshape,  % 注释的风格,斜体
    stringstyle         =   ttfamily,  % 字符串风格
    flexiblecolumns,                % 别问为什么,加上这个
    numbers             =   left,   % 行号的位置在左边
    showspaces          =   false,  % 是否显示空格,显示了有点乱,所以不现实了
    numberstyle         =   zihao{-5}ttfamily,    % 行号的样式,小五号,tt等宽字体
    showstringspaces    =   false,
    captionpos          =   t,      % 这段代码的名字所呈现的位置,t指的是top上面
    frame               =   lrtb,   % 显示边框
}

lstdefinestyle{Python}{
    language        =   Python, % 语言选Python
    basicstyle      =   zihao{-5}ttfamily,
    numberstyle     =   zihao{-5}ttfamily,
    keywordstyle    =   color{blue},
    keywordstyle    =   [2] color{teal},
    stringstyle     =   color{magenta},
    commentstyle    =   color{red}ttfamily,
    breaklines      =   true,   % 自动换行,建议不要写太长的行
    columns         =   fixed,  % 如果不加这一句,字间距就不固定,很丑,必须加
    basewidth       =   0.5em,
}

只要把上面的这一段代码,粘贴到你的

导言区域就可以了,当前,前提是你安装了
listings 库,如果没有,请参见我的另一篇文章:如何安装 TeXLive 2020。

现在我来解释一下上面的代码做了些什么。

  1. usepackage{listings} 不用多说,就是简单地引用库;
  2. lstset 是对库进行设置,主要是设置某些关键的地方,它含有很多字段;
  3. lstdefinestyle{Python} 是新定义一个叫做Python的样式,到时候直接引用这个设置就可以;
  4. lstsetlstdefinestyle{Python} 的东西差不多,不同之处就是优先级不同,后者更高,前者是在你没有在 Python 中进行相关设定的时候,为你自动设置的一些东西。总而言之,Python 样式里有的,一定会在 Python 代码里忠实被执行;Python 样式里没有的,系统会检查 lstset 里有没有相关设置,如果有就用,没有的话就用系统的默认设置。
  5. 其他字符自己看注释

那我如何使用这些设定呢?看代码

lstinputlisting[
    style       =   Python,
    caption     =   {bf ff.py},
    label       =   {ff.py}
]{../src/duke/ff.py}

{../src/duke/ff.py}是我源代码在本系统中相对于TeX文件的位置;style选择之前定义过的Python,label是一个可引用的标签,以后可以使用ref{ff.py}关键字引用这段代码,caption是我要在这个代码上面显示的表头,告诉大家这个代码有关什么东西,bf 是加粗,没什么其他意思。

再上一个图,看一下长代码行换行。

2585d63814998367f4c4a416d562a165.png

图 2 长代码换行。

结束语

到这里就结束了,如果你还想知道如何设置 C++、Java 等代码的风格,可以关注我的专栏「修辞与编程」,我会在后期提供方案。如果这篇文章帮助到了你,请点赞支持我,感谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值