低水平 LaTeX 作品的特点

罗列(个人认为的)低水平 LaTeX\LaTeX 作品的特点

初级错误

  • 手写(列表)编号,例子:

    • 1.1、一、。正确写法:用 enumerate/itemize 环境配合 enumitem 宏包
  • 手写章节格式,例子:

    • \chapter{一、文字}。正确写法:用 CTeX 宏集提供的 \ctexset
  • 没有特殊原因而不用浮动体/滥用 [H] 选项

  • 数学模式与文本模式乱用,例子:

    • a$^2$ \to a2\text{a}^2 这种低水平写法。正确写法:$a^2$ \to a2a^2

    • 极端的例子:

      \textbf{例12.1(杨不等式):}$ f(x) $$ \mathbb{R} $ 上严格单调递增,连续,$ f(0) = 0 , g(y) $$ f(x) $ 的反函数,则 $ {\forall}a , b > 0 , \int_{0}^{a}f(x)dx + \int_{0}^{b}g(y)dy \geq ab $
      \begin{proof}
      \begin{flushleft}
      \begin{gather*}
      \int_{0}^{a}f(x)dx = S_{OABO} , \int_{0}^{b}g(y)dy = S_{OCEO} , ab = S_{OADEO} \\
      S_{OABO} + S_{OCEO} \geq S_{OADEO} (\text{当且仅当} b = f(a) \text{时等号成立}) \\
      \text{设} T = \{ x_0 , x_1 , \cdots , x_n \} \text{是} [0 , a] \text{的一个分割,令} y_i = f(x_i) , i = 1 , \cdots , n \\
      \text{则} \{ y_0 , y_1 , \cdots , y_n \} \text{是} [0 , b] \text{的一个分割} \\
      \sum\limits_{i = 1}^nf(x_i)\bigtriangleup x_i + \sum\limits_{i = 1}^ng(y_{i - 1})\bigtriangleup y_i \\
      = \sum\limits_{i = 1}^nf(x_i)(x_i - x_{i-1}) + \sum\limits_{i = 1}^nf^{-1}[f(x_{i-1}))(f(x_i) - f(x_{i-1})]\\
      = \sum\limits_{i = 1}^nf(x_i)(x_i - x_{i-1}) + \sum\limits_{i = 1}^nx_{i - 1}[f(x_i) - f(x_{i-1})] \\
      = \sum\limits_{i = 1}^n[x_if(x_i) - x_{i-1}f(x_{i-1})] \\
      = x_nf(x_n) - x_0f(x_0) \\
      = af(a)
      \end{gather*}
      \end{flushleft}
      \end{proof}
    • 为什么不推荐这么写?

      • 因为会导致
        • 难以对齐
        • 数学符号跟文字需要手动加空格
        • 难以做到自动缩进
        • 无法自动、正确的断页
        • 无法自动、正确的断行

      甚至于,这种写法本身就是错的,错的就是错的,不需要理由,实践证明,这种写法迟早会吃亏的。

  • 算符没有正确输入,例子:

    • $sin x$ \to sinxsin x。正确写法:$\sin x$ \to sinx\sin x
  • 单位直接在数学模式中书写,例子:

    • $10kg$ \to 10kg10kg

    • $10\,kg$ \to 10kg10\,kg

    • $10\,\mathrm{kg}$ \to 10kg10\,\mathrm{kg}

    • 正确写法:

      % \usepackage{siunitx}
      \SI{10}{kg}

      \to 10kg10\,\mathrm{kg}

  • 分段与换行乱用,例子:

    很多文字很多文字\\
    很多文字很多文字\\

    分段是分段,换行是换行,要区分。分段是表示一段结束,另一段开始。换行则只是换行。最好让 LaTeX\LaTeX 自己判断换行,而不是手动换,根本就不能做到双端对齐的效果。

  • 中西文、中文与数学公式、西文与数学公式之间没有空格,一般是用 pdflatex 编译就会产生这样的效果,有些情况用 xelatex 也会如此,所以要手动加空格,例子:

    • 文字contentpdflatex\to 文字content
    • 图\ref{label}所示xelatex\to 图x所示。正确写法:图~\ref{label} 所示
  • 选择题选项没有纵向对齐,并且出现大量未封装过的表格等。正确写法:

    \makeatletter
    \newcommand{\fourch}[4]{%
    \noindent%
    \begin{tabular}{*{4}{@{}p{0.25\textwidth}@{}}}%
    \@hangfrom{A.}#1 & \@hangfrom{B.}#2 & \@hangfrom{C.}#3 & \@hangfrom{D.}#4
    \end{tabular}%
    }
    \newcommand{\twoch}[4]{%
    \noindent%
    \begin{tabular}{*{2}{@{}p{0.5\textwidth}@{}}}%
    \@hangfrom{A.}#1 & \@hangfrom{B.}#2 \\
    \@hangfrom{C.}#3 & \@hangfrom{D.}#4
    \end{tabular}%
    }
    \newcommand{\onech}[4]{%
    \noindent%
    \begin{tabular}{@{}p{\textwidth}@{}}%
    \@hangfrom{A.}#1 \\
    \@hangfrom{B.}#2 \\
    \@hangfrom{C.}#3 \\
    \@hangfrom{D.}#4
    \end{tabular}%
    }
    \makeatother

    更多的可以去看《在 LaTeX 中自动排版选项

  • 代码不放在代码环境里 / 只是用 \ttfamily/\texttt 假装放在了代码环境,例子:

    • 不放代码块还得手动将 & 转义,排版效果还差
      connect(captureBtn,\&QPushButton::clicked, [=](){ cameraImageCapture->capture(qfile); } )
    • 中西文混排出现不需要的空格
      \texttt{test测试test}

稍微高级一点的错误

  • 十分繁琐的输入微分符号 dx\mathrm{d}x,例子:

    • $\int f(x) dx$ \to f(x)dx\int f(x) dx

    • $\int f(x) \,dx$ \to f(x)dx\int f(x) \,dx

    • $\int f(x) \,\mathrm{d}x$ \to f(x)dx\int f(x) \,\mathrm{d}x

    • 推荐写法:

      % \usepackage{physics}
      $\int f(x) \dd{x}$

      \to f(x)dx\int f(x) \,\mathrm{d}x

      or

      % \newcommand*{\dif}{\mathop{}\!\mathrm{d}}
      $\int f(x) \dif{x}$

      \to f(x)dx\int f(x) \,\mathrm{d}x(参考:《在 LaTeX 中使用微分算子的正确姿势》)

  • 宏包功能重复 / 覆盖:

    • 缩进设置重复
      \usepackage{ctex}
      \usepackage{indentfirst}
      \setlength{\parindent}{2em}
      现在,只需要加载 ctex 宏包即可得到正确的缩进
    • 字体设置重复:
      \usepackage{ctex}
      \usepackage{fontspec}
      \setmainfont{Times New Roman}
      \usepackage{newtxtext}
  • 内容与形式没有分离,正文代码出现了大量的 \\[……]\(rm/sf/tt)family\(md/bf)series\(up/it/sl/sc)shape\normalfont(正文不应该如此繁琐的调节格式,而是应该封装在环境中),例子:

    • \section{\huge\color{red} 文字}。正确写法:用 CTeX 宏集提供的 \ctexset
    • \bf 是过时命令,\bf\bfseries 功能重复
      \underline{{\bf\bfseries test}}
    • \textsuperscript{\cite{test}} 而不是指定宏包选项,非常繁琐
    • 直接用表格不好吗?
      \begin{center}
      \zihao{-3} 学生姓名:\underline{\qquad test\qquad}\\[10pt]
      \zihao{-3} 所在系别:\underline{\qquad test\qquad}
      \end{center}
文章作者: sikouhjw
文章链接: https://sikouhjw.github.io/2020/04/26/2020-04-26-Low-level-latex-works/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 sikouhjw.github.io
支付宝捐赠
微信捐赠