制作代码模板的 LaTex 模板

Posted 水郁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了制作代码模板的 LaTex 模板相关的知识,希望对你有一定的参考价值。

Tex 真的是一个用起来非常舒服的排版工具(对于排版要求高的人来说),去比赛前一天放弃了markdown转pdf来生成代码模板,现学Tex(其实美赛已经用过了:P)。

推荐一个链接:TeX — Beauty and Fun,可以了解一下Tex。

我用的工具是Mac下的TexShop,排版时选择XeLaTeX

基本模板:

% !TEX encoding = UTF-8 Unicode
\\documentclass[a4paper,11pt,twoside,fontset = fandol,UTF8]{ctexbook} % 页面A4纸大小,11 磅大小的字体,式样为双面,字体集为Fandol,编码为UTF8,文档类型为cTex的book(支持中文)
\\usepackage[a4paper,scale=0.8,hcentering,bindingoffset=8mm]{geometry} % A4纸大小,缩放80%,设置奇数页右边留空多一点
\\usepackage{hyperref}      % 超链接
\\usepackage{listings}      % 代码块
\\usepackage{courier}       % 字体
\\usepackage{fontspec}      % 字体
\\usepackage{fancyhdr}      % 页眉页脚相关宏包
\\usepackage{lastpage}      % 引用最后一页
\\usepackage{amsmath,amsthm,amsfonts,amssymb,bm} %数学
\\usepackage{graphicx}      % 图片
\\usepackage{subcaption}    % 图片描述
\\usepackage{longtable,booktabs} % 表格

\\setmonofont{Consolas}    %设置字体为Consolas
\\lstset{                  %设置代码块
         basicstyle=\\footnotesize\\ttfamily,% 基本风格
         numbers=left,    % 行号
         numbersep=10pt,  % 行号间隔 
         tabsize=2,       % 缩进
         extendedchars=true, % 扩展符号?
         breaklines=true, % 自动换行
         language=C++,
         frame=leftline,  % 框架左边竖线
         xleftmargin=19pt,% 竖线左边间距
         showspaces=false,% 空格字符加下划线
         showstringspaces=false,% 字符串中的空格加下划线
         showtabs=false,  % 字符串中的tab加下划线
 }
\\pagestyle{fancy}         % 页眉页脚风格
\\fancyhf{}                % 清空当前设置
\\fancyfoot[C]{\\thepage\\ / \\pageref{LastPage}}%页脚中间显示 当前页 / 总页数,把\\label{LastPage}放在最后
\\fancyhead[LO,RE]{\\thepage}% 页眉奇数页左边,偶数页右边显示当前页
\\begin{document} 
  \\begin{titlepage}       % 封面
    \\centering
    \\vspace*{\\baselineskip}
    \\rule{\\textwidth}{1.6pt}\\vspace*{-\\baselineskip}\\vspace*{2pt}
    \\rule{\\textwidth}{0.4pt}\\\\[\\baselineskip]
    {\\LARGE Algos @BY 2017\\\\[\\baselineskip]\\small for ACM ICPC}
    \\\\[0.2\\baselineskip]
    \\rule{\\textwidth}{0.4pt}\\vspace*{-\\baselineskip}\\vspace{3.2pt}
    \\rule{\\textwidth}{1.6pt}\\\\[\\baselineskip]
    \\scshape

    \\begin{figure}[!htb]
        \\centering
        \\includegraphics[width=0.3\\textwidth]{icpc}    % 当前tex文件同一目录下名为icpc的任意格式图片
    \\end{figure}

    \\vspace*{3\\baselineskip}
    Edited by \\\\[\\baselineskip] {向饿势力低头\\par}
    {Team \\Large Bow to hungrY \\normalsize{at BUPT}\\par }
    \\vfill
    {\\scshape 2017} \\\\{\\large BEIJING}\\par
  \\end{titlepage}
 \\newpage            % 封面背后空白页
\\tableofcontents     % 目录
\\chapter{计算几何}    % 第一章
\\setcounter{page}{1} % 这里页数从1开始计算
\\section{ 几何基础}   % 第一节
% 代码块
\\begin{lstlisting}
代码内容
\\end{lstlisting}
% ...其它内容
\\end{document}
\\label{LastPage}

章节层次

  • chapter
  • section
  • subsection

图片

如果需要几张图片并排显示,可用subfigure宏包。

\\begin{figure}[h]
    \\centering
    \\begin{subfigure}[h]{0.2\\textwidth}
        \\includegraphics[width=\\textwidth]{平移} % 名为\'平移\'的图片文件放在同一目录
    \\end{subfigure}
    ~ 
    \\begin{subfigure}[h]{0.2\\textwidth}
        \\includegraphics[width=\\textwidth]{缩放}
    \\end{subfigure}
   ~
    \\begin{subfigure}[h]{0.5\\textwidth}
        \\includegraphics[width=\\textwidth]{旋转}
    \\end{subfigure}
    \\\\
    \\begin{subfigure}[h]{0.8\\textwidth}
        \\includegraphics[width=\\textwidth]{3D绕轴翻转}
    \\end{subfigure}
\\end{figure}

表格

用了longtable宏包

\\setlength\\LTleft{0pt}
\\setlength\\LTright{0pt}
\\begin{longtable}[]{@{}llll@{}}
\\toprule
\\(r\\cdot 2 ^ k + 1\\) & r & k & g\\tabularnewline
\\midrule
\\endhead
3 & 1 & 1 & 2\\tabularnewline
5 & 1 & 2 & 2\\tabularnewline
17 & 1 & 4 & 3\\tabularnewline
97 & 3 & 5 & 5\\tabularnewline
193 & 3 & 6 & 5\\tabularnewline
257 & 1 & 8 & 3\\tabularnewline
7681 & 15 & 9 & 17\\tabularnewline
12289 & 3 & 12 & 11\\tabularnewline
40961 & 5 & 13 & 3\\tabularnewline
65537 & 1 & 16 & 3\\tabularnewline
786433 & 3 & 18 & 10\\tabularnewline
5767169 & 11 & 19 & 3\\tabularnewline
7340033 & 7 & 20 & 3\\tabularnewline
23068673 & 11 & 21 & 3\\tabularnewline
104857601 & 25 & 22 & 3\\tabularnewline
167772161 & 5 & 25 & 3\\tabularnewline
469762049 & 7 & 26 & 3\\tabularnewline
1004535809 & 479 & 21 & 3\\tabularnewline
2013265921 & 15 & 27 & 31\\tabularnewline
\\bottomrule
\\end{longtable}

代码

用的是listings宏包。具体配置可看wiki-Source_Code_Listings,要求多的可查阅文档

Markdown 转换到 LaTex

原来的 Markdown 的代码模板里大部分就是 ### 标题和代码块,手动加入 LaTex 里太辛苦了,用 typora 转的 LaTex 内容太复杂了,所以我写了个 c++ 程序来转:P,不过也许 python更适合写这种程序。

效果图

以上是关于制作代码模板的 LaTex 模板的主要内容,如果未能解决你的问题,请参考以下文章

Latex 博客模板-基于电子科技大学学位论文latex模板

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段2——.vue文件的模板

VSCode自定义代码片段1——vue主模板

VSCode自定义代码片段(vue主模板)

Eclipse 中的通用代码片段或模板