以下小MWE给出错误,TeX Live 2014
\documentclass[]{article}
\usepackage{amsmath}
\usepackage{physics}
\let\left\relax
\let\right\relax
\begin{document}
$\frac{a^2 \left(-\log \left(a^2 \left(\sqrt{\frac{a^2 y(x)}{b^2 x^2}}
+1\right)-\frac{2 a^2 y(x)}{b x^2}\right)-\frac{2 a
\tanh ^{-1}\left(\frac{a^2-4 b \sqrt{\frac{a^2 y(x)}{b^2 x^2}}}
{a \sqrt{a^2+8 b}}\right)}{\sqrt{a^2+8 b}}\right)}{2 b}=
\frac{a^2 \log (x)}{b}+c_1,y(x)$
\end{document}
当注释掉该physics
包时,编译成功!
PS\let\left\relax
当我注意到仅当我包含物理包时才会出现错误时,我正在使用等代码来帮助格式化长表达式。
pdflatex foo.tex
.......
(/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
! Missing } inserted.
<inserted text>
}
l.15 \frac{a^2 \log (x)}{b}
+c_1,y(x)$
?
我暂时删除了物理包。但我想知道为什么这种情况只发生在物理包上,因为我包含了很多其他包,没有任何问题。
答案1
这与你已经提到的包裹有关physics
。而且它只是
\frac{a^2 \log (x)}{b}+c_1,y(x)
这是有问题的,事实上是这样的\log
,删除它之后 MWE 就可以正常工作了。
该physics
包很混乱\log
,即使看了代码,我也不太明白为什么。
更新:物理使\log(x)
有自动缩放栅栏(一般来说这不是一个好主意,正如我们多次说过的那样)。它使用类似于
\normallog \argopen( x \argclose)
这又类似于
\normallog \mathopen{}\mathclose\bgroup\left( a \aftergroup\egroup\right)
一\left...\right
对组成一组。因此,当您让它们放松时,我猜它们\aftergroup
会错位并导致错误。
简而言之,不要这么做;-)
答案2
我对最新的 TL 2014 没有任何问题:
\documentclass[]{article}
\usepackage{mathtools}
\usepackage{physics}
\begin{document}
\begin{multline}
\frac{a^2}{2b} \left(-\log \left(a^2 \left(\sqrt{\frac{a^2 y(x)}{b^2 x^2}}
+1\right)-\frac{2 a^2 y(x)}{b x^2}\right)-\frac{2 a
\tanh ^{-1}\left(\frac{a^2-4 b \sqrt{\frac{a^2 y(x)}{b^2 x^2}}}
{a \sqrt{a^2+8 b}}\right)}{\sqrt{a^2+8 b}}\right) \\
= \frac{a^2 \log (x)}{b}+c_1,y(x)
\end{multline}
\end{document}
答案3
物理包为宏等实现了更多的智能\log
。\sin
这些宏扫描它们的数学参数并\left
\right
以非常具体的方式在参数开头使用原语。当您重新定义这些原语时,这些宏当然会崩溃。如果您需要重新定义\left
,\right
并且如果您需要使用物理包,那么您可以尝试添加:
\def\log{\mathop{\rm log}\nolimits}
etc.
问题是,既然物理包的智能性已被这种重新定义所破坏,为什么还需要使用它呢?