美文网首页
用LaTeX写C语言实验报告3:标题、代码块和图表

用LaTeX写C语言实验报告3:标题、代码块和图表

作者: tommy990607 | 来源:发表于2019-03-17 17:35 被阅读0次

    在托更了三个多月以后,才终于想到我这个坑还没有填完,真是太可怕了,得尽快完成了。

    开始教程之前,我先介绍一款非常好用的LaTeX编辑器,它不是本地的,而是在线使用的,也就是说只要在任何有网络的电脑上都可以使用啊!!!简直不要太方便啊。它就是著名的Overleaf,不过可惜的它是用了Google CDN,所以导致网站加载速度非常非常慢,大家可以去下载一个叫Replace Google CDN的插件,可以自动替换Google CDN为国内的CDN,我使用之后感觉还蛮不错的。


    标题

    简单来说,和标题有关的命令只有三个:
    /section表示一级标题,/subsubsection表示二级标题,/subsubsubsection则是三级标题

    \section{实验题目与要求}
    \section{实验内容}
        \subsection{主要函数流程图}
        \subsection{源程序}
    \section{实验结果}
    \section{实验总结分析}
    
    上述代码生成的效果是这样的:

    但看着看着总感觉一级标题和二级标题不太匹配,看着非常不舒服
    简单百度之后找到了这个命令:

    \ctexset{
        section={format=\Large\bfseries}
    }
    

    它可以修改一级标题的格式,例如这里是修改为大号字体并且加粗,把这句话放到导言区就可以了。加完以后效果很不错!




    代码块

    既然是C语言实验报告,那肯定需要展示代码,由于我之前批过作业,他们都是交的doc格式的实验报告,所以放代码之后效果是这样的:

    这真的是可读性非常非常差好不好,既没有缩进也没有高亮,真的不想认真看下去。
    而LaTeX就不一样了,它支持拓展,各种各样的功能都可以通过拓展来实现,例如我下面要说的代码块就是一个典型例子。

    minted

    pymentize是用来做高亮显示非常好的一个Python库,而minted恰恰使用这一语法高亮库来实现代码的高亮显示,其效果做得也非常不错。
    正是因为如此,我们首先需要安装Python以及pymentize。

    环境配置

    1. 安装Python: 我这里就不赘述了,网上教程也一大堆,随便找一个都可以。
    2. 安装pymentize: 可以看别人的这个笔记,windows下用easy_install安装Pygments

    如果你是用本地LaTeX编辑器的话,编译的时候可能会报错,提示说minted Error: You must invoke LaTeX with the -shell-escape flag,这时候需要添加编译参数-shell-escape
    以我用的TeXstudio为例,其他的编辑器应该也都大同小异。

    1. 首先进入首选项配置(菜单->Options->Configure TeXstudio)
      2.进入Command选项卡,在XeLaTeX这一行里进行修改,在中间任何位置加入-shell-escape(像我这样)
    2. 点击OK即 可
    至此,环境配置完毕

    开始使用

    首先别忘了在导言区加上\usepackage{minted}

    \begin{minted}{c++}  
    int main() {  
       printf("hello, world");  
       return 0;  
    }  
    \end{minted}
    

    用起来很简单,只要让minted环境包围住你的代码就可以了,上面的{c++}是说明语言类型的,效果如下:

    不过缩进部分竟然变成了莫名其妙的^^I,查阅一番之后才发现是xelatex的缘故,要再加上-8bit这个编译参数,修改完后效果如下: 不过还是有点瑕疵,例如缩进尺寸与原来的代码不一致。

    我查阅了官方文档后发现minted默认的缩进宽度是相当于8个空格,而我们平常写代码缩进是相当于4个空格的宽度,所以得修改minted的默认配置。

    如何修改默认配置?

    有两种方法:

    1. 只修改当前代码块的配置
    \begin{minted}[tabsize=4,linenos=true]{c++} 
    ...
    \end{minted}
    

    像这样子一样以键值对的方式设置属性,例如我这里设置了缩进宽度为4个空格,显示行号

    1. 修改所有代码块的配置
    \setminted{linenos=true,tabsize=4}
    

    与之前的ctexset不同的是,它不能放在导言区,要放在document环境(也就是正文区)内,设置一次后,之后所有的代码块都共享这些属性

    设置完之后效果非常不错:

    除了上面介绍的两个属性以外,还有很多丰富多样的设置,例如高亮风格什么的都可以修改,具体查看上面的官方文档即可

    lstlisting

    这是另外一种代码高亮的库,不过已经很久没有更新了,功能也没有Minted那么多,我这里就只展示一下范例代码和效果

    \usepackage{listings}
    \lstset{
        numbers=left, 
        numberstyle= \tiny, 
        keywordstyle= \color{ blue!70},
        commentstyle= \color{red!50!green!50!blue!50}, 
        frame=shadowbox, % 阴影效果
        rulesepcolor= \color{ red!20!green!20!blue!20} ,
        keywordstyle=\color{blue},     % keyword style
        stringstyle=\color{mymauve},  % string literal style
        xleftmargin=2em,xrightmargin=2em, aboveskip=1em,
        framexleftmargin=2em,
        language=C,
        basicstyle=\ttfamily
    }
    ...
    
    \begin{lstlisting}[language=C++]
    #include <iostream>
    using namespace std;
    int main(){
        cout << "Hello world!" << endl;
    }
    \end{lstlisting}
    

    图表

    插入图片

    如果只想简单的插入一张图片的话很简单

    \includegraphics[keyvals]{imagefile}
    

    keyvals是属性的键值对,若不需要设置的话可以不要,imagefile则是图片相对于tex文件的路径(没有后缀名)
    默认情况下,图片是以本来的大小来展示,所以一般情况下我们会这样使用:

    \includegraphics[width=\linewidth]{testImage}
    

    其中的\linewidth是指一行的宽度,表示强制设置图片占一行的宽度,如果是0.5\linewidth,就是表示图片占一半的宽度,以此类推。

    还有一个重要的命令:\graphicspath{{imgs/}}
    它可以设置图片统一的路径,例如你把图片都放在imgs文件夹,那么你设置了上述代码后,includegraphics里的图片路径部分就不需要写“/imgs”了,直接写图片名称即可,如果你有多个路径用来放置图片,那么可以这样:

    \graphicspath{{folder1/} {folder2/} {folder3/}}
    

    只是显示简单的一张图片确实很简单,但是如果你想给图片设置标题,让其居中,或者图文混排,就不只是includegraphics这一个命令了,你需要用到figure环境
    首先看看下面的代码:

    \begin{figure}[h]
        \centering  %插入的图片居中表示
        \includegraphics[width=0.25\linewidth]{testImage}
        \caption{测试图片}  %图片的标题
    \end{figure}
    

    效果如下:


    基本上注释里面已经将大部分都解释清楚了,除了那个[h],这里的h是here的简称,表示将图片插入到此处,如果没有这个的话会默认将图片插入到当前页面的顶部,而不是当前代码的位置

    插入表格

    插图可以用其他软件做好插入,但表格一般都还是直接在LATEX 里面完成的。制作表格,需要确定的是表格的行、列对齐模式和表格线,这是由 tabular环境完成的:

    \begin{table}[H]
        \begin{tabular}{|rrr|} 
            \hline 
            直角边$a$ & 直角边$b$ & 斜边 $c$\\ 
            \hline  3 & 4 & 5 \\ 
            5 & 12 & 13 \\ 
            \hline 
        \end{tabular}% 
        \qquad 
        ($a^2 + b^2 = c^2$) 
    \end{table}
    

    tabular 环境有一个参数,里面声明了表格中列的模式。在前面的表格中,|rrr| 表示表格有三列,都是右对齐,在第一列前面和第三列后面各有一条垂直的表格线。在 tabular 环境内部,行与行之间用命令\\隔开,每行内部的表项则用符号 & 隔开。表 格中的横线则是用命令\hline产生的。 表格与\includegraphics命令得到的插图一样,都是一个比较大的盒子。一般也 放在浮动环境中,即table环境,参数与大体的使用格式也与figure环境差不多,只 是\caption命令得到的标题是“表”而不是“图”。

    这里并没有给表格加标题,也没有把内容居中,而是把表格和一个公式并排排开, 中间使用一个\qquad分隔。命令\qquad产生长为2em(大约两个“M”的宽度)的空 白。因为我们已经使用\qquad生成足够长度的空格了,所以再用\end{tabular}后的注释符取消换行产生的一个多余的空格,这正好达到我们预想的效果。

    相关文章

      网友评论

          本文标题:用LaTeX写C语言实验报告3:标题、代码块和图表

          本文链接:https://www.haomeiwen.com/subject/qpcepqtx.html