![如何理解和编写LaTeX代码?](https://linux22.com/image/278821/%E5%A6%82%E4%BD%95%E7%90%86%E8%A7%A3%E5%92%8C%E7%BC%96%E5%86%99LaTeX%E4%BB%A3%E7%A0%81%EF%BC%9F.png)
LaTeX 就像一门语言。为了编写 LaTeX 代码,我必须理解“单词”和“句子结构”。我在 wiki 上搜索过一些 LaTeX 书籍,但它们只提供 LaTeX 命令,而不是如何为某些特定目的编写 LaTeX 代码或理解 LaTeX 代码。
以下是一个例子:
\renewenvironment{svgraybox}%
{\fboxsep=12pt\relax
\begin{shaded}%
\list{}{\leftmargin=12pt\rightmargin=2\leftmargin\leftmargin=\z@\topsep=\z@\relax}%
\expandafter\item\parindent=\svparindent
\hskip-\listparindent}%
{\endlist\end{shaded}}%
%
\renewenvironment{svtintedbox}%
{\fboxsep=12pt\relax
\begin{tinted}%
\list{}{\leftmargin=12pt\rightmargin=2\leftmargin\leftmargin=\z@\topsep=\z@\relax}%
\expandafter\item\parindent=\svparindent
\relax}%
{\endlist\end{tinted}}%
%
}}
%
\let\SVMonoOpt\@empty
我不知道什么是\z@
,什么是\relax
,什么是\fboxsep
......并且如果我想以自己的形式设计我的 LaTeX 文件,我知道我必须了解许多其他事情。
请注意,我可以在数学中编写简单的 LaTeX 环境(如矩阵、对齐、环境),但它并不能帮助我理解上述代码。
那么,我该怎么办?我应该读什么书?或者我应该学习哪种编程语言?
答案1
TeXbook 是了解底层 TeX 语言的最佳场所,尽管texdoc texbytopic
大多数发行版中的 TeX-by-Topic ( ) 是一种很好的免费替代方案。但您展示的大部分内容并非直接使用 TeX 原语,而是使用诸如\list
latex 格式中定义的构造。LaTeX Companion 对此有详细信息,或者免费的 LaTeX 文档来源texdoc source2e
有很多信息。
当然也可以使用这个网站。例如
在
\z@
\z@ 起什么作用?关于列表参数,有几个答案,例如,如何创建自定义列表和 \item 元素?
例如
\relax
\relax 和 {} 之间有什么区别?很多
\expandafter
问题,例如,何时使用 \edef、\noexpand 和 \expandafter?但请注意,您显示的代码中的用法是错误的,它是无害的,但没有执行任何操作。
答案2
你可以通过询问 LaTeX 本身来了解任何命令的作用。只需打开控制台窗口并运行latex
(或你喜欢的任何变体),然后你就可以逐行发出命令。
例如,要找出平均值\z@
,你可以使用
$ latex
**\makeatletter
*\show\z@
LaTeX 会给你
> \z@=\dimen12.
(该\makeatletter
命令允许您使用@
登录命令。)
如果你想知道存储在的长度\dimen12
,你可以使用
*\showthe\dimen12
这将给你
> 0.0pt
因此该\z@
命令是零长度的简写。
该\show
命令将告诉您除原始命令之外的任何命令的定义;您可以使用 Google 搜索在线查找这些命令。