虽然我经常对输出的 PDF 结果感到满意,但我的 latex 代码却经常变得非常丑陋。代码可读性差使得编辑过程非常困难。有没有什么简单的技巧可以格式化我的代码以使其更具可读性?
以下是一个例子:
\begin{align*}
H_3\ket{\psi(t)} &= \left(\hbar\epsilon \int_{z_0}^{z_0+l}E_a^{(-)} E_a^{(+)} E_b^{(-)} E_b^{(+)} dz \right) \ket{\psi(t)} \\
&= \underbrace{\left(\hbar\epsilon \int_{z_0}^{z_0+l}E_a^{(-)} E_a^{(+)} E_b^{(-)} E_b^{(+)} dz \right)}_{\text{equation \ref{H3}}} \underbrace{\left( \sum_n \sum_m c_{nm}(t) e^{-2 \pi i(n+m)c t/L} \ket{1_n}_a\ket{1_m}_b \right)}_{\ket{\psi(t)}} \\
\end{align*}
你会如何清理它?就我个人而言,我感兴趣的是添加新行,使每行更具可读性。但是通过缩进或将我的代码拆分成不同的行,我收到了错误消息。
答案1
这不是一个真正的技巧,但我通常将长方程式放在几行上,并使用 2 个空格系统地缩进代码层以提高可读性。
只需确保环境中没有空行align
,否则您将收到错误! Paragraph ended before \align* was complete.
。
例如,当方程式很长时,我会匹配对\left
\right
和对的缩进:\int
dz
\documentclass[a4paper,11pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{braket}
\begin{document}
\begin{align*}
H_3 \ket{\psi(t)}
%%%%
&= \left(
\hbar\epsilon
\int_{z_0}^{z_0+l}
E_a^{(-)} E_a^{(+)} E_b^{(-)} E_b^{(+)}
dz
\right)
\ket{\psi(t)} \\
%%%%
&= \underbrace{
\left(
\hbar\epsilon
\int_{z_0}^{z_0+l}
E_a^{(-)} E_a^{(+)} E_b^{(-)} E_b^{(+)}
dz
\right)
}_{\text{equation \ref{H3}}}
\underbrace{
\left(
\sum_n \sum_m
c_{nm}(t)
e^{-2 \pi i(n+m)c t/L}
\ket{1_n}_a \ket{1_m}_b
\right)
}_{\ket{\psi(t)}} \\
\end{align*}
\end{document}
额外%%%%
帮助我找到等号。
答案2
使代码复杂化的一件事是大量形式为^{(
...的表达式)}
。我使用以下代码为它们定义了一个快捷方式:
\catcode`\"=13
\newcommand*{"}[1]{^{(#1)}}
这意味着a"1
成为A(1)和a"{10}
变成A(10)
我还会为你经常使用的代码段定义宏(例如你已经有了\ket
,这很好)。例如,你可以尝试
\newcommand{\paren}[1]{\left(#1\right)}
(或使用\DeclarePairedDelimiter
)。
您多次使用的另一个量(可能也在文档的其余部分中)是积分,因此让我们将其包装在宏中:
\newcommand{\Eabint}{\int_{z_0}^{z_0+l} E_a"- E_a"+ E_b"- E_b"+ dz}
我注意到的最后一件事是,这些\underbrace
命令使代码更难阅读/更混乱。只要没有空行,您就可以将它们放在自己的行上。
完成所有这些更改后,代码看起来不再那么混乱了:
\begin{align*}
H_3\ket{\psi(t)} &= \paren{\hbar\epsilon \Eabint} \ket{\psi(t)} \\
&= \underbrace{
\paren{\hbar\epsilon \Eabint}
}_{\text{equation \ref{H3}}}
\underbrace{
\paren{\sum_n \sum_m c_{nm}(t) e^{-2 \pi i(n+m)c t/L} \ket{1_n}_a\ket{1_m}_b}
}_{\ket{\psi(t)}} \\
\end{align*}