伙伴云客服论坛»论坛 S区 S产品资讯 查看内容

0 评论

0 收藏

分享

办公工具-latex

一、排版总论

1.1 缺省权利

​ 首先,最重要最需要强调的是,排版是一个信息量极大的工程。字体,格式,对齐方式,页眉页脚,都只是排版的冰山一角,可以说,一个人是没有办法完全控制一个印刷文件里面的所有排版细节的,就仿佛人们可以挑选衣服的颜色,款式,但是人们却对“编织手法,扣子是材质”之类的问题疏于关注,这是因为这些细节没办法全部被考量,人类的大脑接受不了这么多的信息。
​ 由此就衍生出了排版里面我最看重的一个概念,就是“缺省”。正是由于人们没有办法关注到每一个细节,所以对于用户没有办法关注到的细节,软件开发者就必需提供“默认设置”,也就是“缺省”。当然理想的缺省是没有任何问题的,人们可以随意修改自己关心的缺省设置为自己的设置,而对于自己不关心的设置就采用“默认设置”。
​ 但是事实似乎并不是这样的,修改缺省设置并不是简简单单的,我曾经为了在word中将目录调成人能看的样子,查阅各种资料查了一个小时,最后手敲的目录。由此就引出了一个根本的问题:似乎缺省设置进犯了用户排版的权利。而我评价一款排版编辑工具的好坏,最重要的就是看它在我看重的的设置中修改的难度
​ 假设由此来看,现实生活中LaTeX和Word都不是很好的软件,我自己的学习中只要敲代码和写笔记两个文字编辑的排版需求。而这两个需求对于排版设计没有那么多的要求,所以各种IDE和Typora可以完全满足我的需求,并不需要专业的排版软件,但是我的生活中还有一个东西叫做论文,这个东西是一个需要更多排版设计的东西(其实还有一个东西是PPT,那个东西太恐惧了)。这使就需要对LaTex和Word做出选择了。
​ 我刚刚学完LaTex,感觉确实因为是代码化的,所以确实在修改方面有很多的优势,但是也并没有说到达完全的自由,起码我觉得还是有很多东西是受到限制的,所以我如今的观点是LaTeX只是一个软件,而不是一个救星。比如说扩展包之类的东西,还是感觉用数值改的化,确实丧失了一些“所见即所得”的设计直观优势。
1.2 理论思路

​ 练习排版最重要的是理论(我坚信设计才干是在理论中增长的)。但是显然我没有那么多的理论任务,所以无论是之前看《Word排版之道》还是各种学习视频,因为始终没有跟理论结合起来,所以根本上就是看过就忘。这是没有办法的事情,我总不可能变出理论任务来,所以只能用一种低效的方式停止排版的学习。
​ 不过我还是想清楚了一个很重要的事情,就是将文章和排版解耦联(格式与内容分别),我可以先用Typora贮存文本信息和文章的层次构造,然后再在Word或者LaTeX上考虑排版任务,这样分工,就可以让我在写文章的时候专注于文章的内容和构造,而在排版的时候专注于排版思想的实现。
​ 这篇文章第三章可以看做是LaTeX对设计思想的一种实现。同样也可以看做是一组接口,凡是可以实现这些接口的排版工具都是可以考虑的。
​ 此外,对于更多的排版要求,应该及时整理,哪怕是细碎的知识点,也要及时整理收纳。这不是啥系统的东西,设计不成系统,系统是评论家干的事情。
二、LaTeX语法

2.1 语句分类

​ LaTex的源代码语句可以分为三种:
    注释:以 % 开头,示例如下
    1. % 注释语句以 % 开头
    复制代码
    命令:又分为普通命令环境两种,两者主要是格式的区别

    • 普通命令,以 \ 开头,直接跟命令,示例如下:
      1. % format: \command[option]{content}
      2. \documentclass{article}
      3. \usepackage[dvipdfm]{graphicx}
      复制代码
    • 环境,会以 \begin{command}[option] content \end{command}呈现,示例如下:
      1. \begin{figure}[htbp]
      2.     \centering
      3.     \includegraphics[width=120pt]{avatar.jpg}
      4.     \caption{This is Rick}
      5. \end{figure}
      复制代码
    数据,就是最普通的文本,呈现于环境中或者命令中, 不能单独呈现。
​ 这三种语句是可以互相嵌套的。
2.2 源码构造

​ 源码分为两个部分,即:

  • 序言(preamble):用来确定一些文档的设置,如文档的类型,引用的包等:
    1. \documentclass{article}
    2. \usepackage[dvipdfm]{graphicx}
    复制代码
  • 正文,在documet这个环境中的所有内容
    1. \begin{document}
    2.     \title{Title}   
    3.     \author{author name}
    4.     \date{\today}
    5.     \maketitle
    6.         ……
    7.            content
    8.            ……
    9. \end{document}
    复制代码
三、功能

3.1 层次构造

​ 层次构造主要包括列表的自动标号目录两个东西,关于列表自动标号,有下面的命令
  1. \part{Part Name}
  2. % \chapter{Chapter Name},只要编译就会报错,是因为article里是没有章的
  3. \section{Section Name}
  4. \subsection{Subsection Name}
  5. \subsubsection{Subsubsection Name}
  6. \paragraph{Paragraph Name}
  7. \subparagraph{Subparagraph Name}
复制代码
​ 生成的效果如图:
办公工具-latex-1.jpg


​ 可以看出,能用的似乎只要section类,而且part显示的还是英文,跟中文论文的格式很不一样。
​ 生成目录只需要两个命令
  1. \setcounter{tocdepth}{2} % 设定目录深度
  2. \tableofcontents % 列出目录
复制代码
​ 假设不想显示某一章的章节,可以如下设置:
  1. \chapter*{...}
  2. \section*{...}
  3. \subsection*{...}
  4. \subsubsection*{...}
复制代码
​ 效果如图
办公工具-latex-2.jpg


3.2 插入图片

​ 需要引入一个宏包
  1. \usepackage{graphicx}
复制代码
​ 插入图片的命令如下:
  1. \includegraphics[option]{path}
复制代码
​ 其中option有以下选项:
办公工具-latex-3.jpg

​ 然后在实际插入图片的时候,我们一般采用浮动环境,这个环境似乎就是有利于排版调整的一个环境,详细有啥作用我不晓得,每个都加上就好了,示例如下:
  1. \begin{figure}[ht]
  2.         \centering
  3.         \includegraphics[scale=0.2]{avatar.jpg}
  4.         \caption{This is Rick}
  5.         \label{fig:avatar}
  6. \end{figure}
复制代码
​ 这是一个比较完好的图片格式,第一行的 [ht] 表示图片的理想位置是Here和Top,还有b(bottom)和p(page单独一页)。其实我也不晓得是什么意思。caption会生成标注,然后label是为了方便交叉引用的,但是这个交叉引用,是没有办法跳转的,仿佛有跳转的交叉引用需要调包,但是还有有难看的红框。这就是我不打算视LaTex为救世主的原因。
3.3 数学公式

​ 这个部分最为简单,就是markdown里的语法就可以了,行内公式如下
  1. This is an inline equation $F = ma$.
复制代码
​ 整段的公式,不再使用 $$...$$ 而是如下示例:
  1. \[
  2.         E = mc^2
  3. \]
复制代码
3.4 标题页

​ 在文档开端的时候,会有一系列的命令来设置标题页的各种东西,最后用 \maketitle 命令生成标题页,如下:
  1. \title{Title}   
  2. \author{author name}
  3. \date{\today}
  4. \maketitle
复制代码
​ 此外,对于 article 来说,是没有标题页的,标题跟正文是连续的,所以为了获得独立的标题页,需要如此设置:
  1. \documentclass[titlepage]{article}
复制代码
3.5 交叉引用

​ 根底的交叉引用就是两组命令,但是我感觉不是太有用,因为是没有超链接作用的。
  1. \label{labelName}
  2. \ref{labelName}
复制代码
​ 交叉引用还有一种特殊的是参考文献,比较根底的是这样的
  1. This is a bib\cite{Rowling_1997}.
  2. \begin{thebibliography}{99}
  3.         \bibitem{Rowling_1997}
  4.                 Joanne K. Rowling,
  5.                 \emph{Harry Potter and the Philosopher's Stone}.
  6.                 Bloomsbury, London,
  7.                 1997.
  8. \end{thebibliography}
复制代码
办公工具-latex-4.jpg


办公工具-latex-5.jpg


​ 但是可以看出不是上标形式,我觉得我处置不了。然后更高阶的方法这里放一篇教程:https://zhuanlan.zhihu.com/p/114733612 。无论怎样,链接应该是没有办法实现的。所以这个问题让我觉得应该专注Word。
3.6 换页分段

换页和分段都是一个简单的命令,比word要好
  1. \newpage % 换页
  2. \par          % 分段
复制代码
3.7 页眉页脚

​ 需要调包,然后停止设置,感觉很难实现每页私人定制,这个问题跟Word上一样,真是排版的难度。
  1. \usepackage{fancyhdr} % 导入fancyhdr包
  2. \pagestyle{fancy}
  3. % 页眉设置
  4. \fancyhead[L]{left head}
  5. \fancyhead[R]{right head}
  6. \fancyhead[C]{center head}
  7. % 页脚设置
  8. \fancyfoot[L]{left foot}
  9. \fancyfoot[C]{\thepage} % 页码
  10. \fancyfoot[R]{right foot}
  11. \renewcommand{\headrulewidth}{4pt} % 分隔线宽度4磅
  12. \renewcommand{\footrulewidth}{4pt}
复制代码
3.8 重定义命令

​ 这是 LaTex 中的一种特殊用法,大约意思就是可以修改一些集成化的设置吧。格式如下:
  1. \renewcommand{\新定义的命令}[参数个数]{命令内容}
复制代码
​ 比较常见的一个应用是转中文的时候,有
  1. \renewcommand\contentsname{目录}
  2. \renewcommand\listfigurename{插图目录}
  3. \renewcommand\listtablename{表格目录}
  4. \renewcommand\refname{参考文献}
  5. \renewcommand\indexname{索引}
  6. \renewcommand\figurename{图}
  7. \renewcommand\tablename{表}
  8. \renewcommand\abstractname{摘要}
  9. \renewcommand\partname{部分}
  10. \renewcommand\appendixname{附录}
  11. \renewcommand\today{\number\year年\number\month月\number\day日}
  12. \renewcommand\algorithm{算法}
复制代码
​ 当然也可以直接定义命令,格式如下:
  1. \newcommand{\新定义的命令}[参数个数]{命令内容}
复制代码
3.9 代码块

​ 需要引入包,然后停止一系列设置,设置如下
  1. \usepackage{listings} %导入包
  2. \definecolor{codebrown}{rgb}{0.8,0.44,0.2}
  3. \definecolor{codegray}{rgb}{0.5,0.5,0.5}
  4. \definecolor{codepurple}{rgb}{0.58,0,0.82}
  5. \definecolor{backcolour}{rgb}{0.95,0.95,0.92}
  6. \lstdefinestyle{mystyle}{
  7.     backgroundcolor=\color{backcolour},   
  8.     commentstyle=\color{codebrown},
  9.     keywordstyle=\color{magenta},
  10.     numberstyle=\tiny\color{codegray},
  11.     stringstyle=\color{codepurple},
  12.     basicstyle=\ttfamily\footnotesize,
  13.     breakatwhitespace=false,         
  14.     breaklines=true,                 
  15.     captionpos=b,                    
  16.     keepspaces=true,                 
  17.     numbers=left,                 
  18.     % numbersep=5pt,
  19.     % numbers=none,
  20.     showspaces=false,               
  21.     showstringspaces=false,
  22.     showtabs=false,                  
  23.     tabsize=2,
  24.     xleftmargin=0.1\textwidth,
  25.     xrightmargin=0.1\textwidth
  26. }
  27. \lstset{style=mystyle}
复制代码
​ 代码块示例:
  1. \begin{lstlisting}[language=Python, caption=Python example]
  2. import numpy as np
  3.    
  4. def incmatrix(genl1,genl2):
  5.     m = len(genl1)
  6.     n = len(genl2)
  7.     M = None #to become the incidence matrix
  8.     VT = np.zeros((n*m,1), int)  #dummy variable
  9.    
  10.     #compute the bitwise xor matrix
  11.     M1 = bitxormatrix(genl1)
  12.     M2 = np.triu(bitxormatrix(genl2),1)
  13.     for i in range(m-1):
  14.         for j in range(i+1, m):
  15.             [r,c] = np.where(M2 == M1[i,j])
  16.             for k in range(len(r)):
  17.                 VT[(i)*n + r[k]] = 1;
  18.                 VT[(i)*n + c[k]] = 1;
  19.                 VT[(j)*n + r[k]] = 1;
  20.                 VT[(j)*n + c[k]] = 1;
  21.                
  22.                 if M is None:
  23.                     M = np.copy(VT)
  24.                 else:
  25.                     M = np.concatenate((M, VT), 1)
  26.                
  27.                 VT = np.zeros((n*m,1), int)
  28.    
  29.     return M
  30. \end{lstlisting}
复制代码
四、模板

​ 原本停止问前面三章的学习,内心非常绝望,觉得如此繁琐的东西,该如何是好。LaTex 比 Word 的优势在于用户对于各种设置的功能的操作权限更大,但是 LaTex 的缺点在于各种黑箱设计,弄得我想更近一步的时候,总是望而生畏。不过当学习了美赛模板之后,突然又对 LaTex 重燃了一分希望,大不了就模板改改,哪怕一开端,自己对排版的控制力不够强,也可以借鉴大佬的力量。
4.1 美赛模板

​ mcmthesis是专门为美赛建模论文设计的模板,各种配置都很齐全,我依照文档又将示例代码重新注释了一遍,注释一遍的过程相当的有好处,感觉对文章的理解加深了。
​ .cls 文件里是可以翻开的,这个文件贮存着模板信息,假设在 .tex 文件中改不了的东西,可以在这个文件里面查找修改,非常方便。不要怕。
​ 放一下我的注释版:https://bhpan.buaa.edu.cn:443/link/A693742C871B6E350B3B8F36FEF91AA8

回复

举报 使用道具

相关帖子
全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

麦咪和熊熊
注册会员
主题 17
回复 23
粉丝 0
|网站地图
快速回复 返回顶部 返回列表