製做代碼模板的 LaTex 模板

Tex 真的是一個用起來很是舒服的排版工具(對於排版要求高的人來講),去比賽前一天放棄了markdown轉pdf來生成代碼模板,現學Tex(其實美賽已經用過了:P)。python

我用的工具是Mac下的TexShop,排版時選擇XeLaTeXc++

基本模板:

% !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宏包。markdown

\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,要求多的可查閱文檔ide

Markdown 轉換到 LaTex

原來的 Markdown 的代碼模板裏大部分就是 ### 標題和代碼塊,手動加入 LaTex 裏太辛苦了,用 typora 轉的 LaTex 內容太複雜了,因此我寫了個 c++ 程序來轉:P,不過也許 python更適合寫這種程序。工具

效果圖

┆涼┆暖┆降┆等┆幸┆我┆我┆裏┆將┆ ┆可┆有┆謙┆戮┆那┆ ┆大┆始┆ ┆然┆ ┆薄┆一┆臨┆你┆的┆還┆沒┆ ┆來┆ ┆是┆來┆遜┆沒┆些┆ ┆雁┆終┆ ┆而┆ ┆ ┆暖┆ ┆如┆地┆站┆有┆ ┆也┆ ┆我┆ ┆的┆有┆精┆ ┆也┆沒┆ ┆你┆ ┆ ┆這┆ ┆試┆方┆在┆逃┆ ┆會┆ ┆在┆ ┆清┆來┆準┆ ┆沒┆有┆ ┆沒┆ ┆ ┆生┆ ┆探┆ ┆最┆避┆ ┆在┆ ┆這┆ ┆晨┆ ┆的┆ ┆有┆來┆ ┆有┆ ┆ ┆之┆ ┆般┆ ┆不┆ ┆ ┆這┆ ┆裏┆ ┆沒┆ ┆殺┆ ┆來┆ ┆ ┆來┆
相關文章
相關標籤/搜索