Tex 真的是一个用起来很是舒服的排版工具(对于排版要求高的人来讲),去比赛前一天放弃了markdown转pdf来生成代码模板,现学Tex(其实美赛已经用过了:P)。python
我用的工具是Mac下的TexShop,排版时选择XeLaTeX。c++
% !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}
若是须要几张图片并排显示,可用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 里太辛苦了,用 typora 转的 LaTex 内容太复杂了,因此我写了个 c++ 程序来转:P,不过也许 python更适合写这种程序。工具