![为什么添加 subdepth 包会导致 lstlisting 给 Matlab 加载文件带来错误?](https://linux22.com/image/334168/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%B7%BB%E5%8A%A0%20subdepth%20%E5%8C%85%E4%BC%9A%E5%AF%BC%E8%87%B4%20lstlisting%20%E7%BB%99%20Matlab%20%E5%8A%A0%E8%BD%BD%E6%96%87%E4%BB%B6%E5%B8%A6%E6%9D%A5%E9%94%99%E8%AF%AF%EF%BC%9F.png)
如果每次我发现 Latex 包之间的冲突时都能得到一美元,那么我就会成为一个富人。
我添加了,现在我在读取一些 Matlab 代码时\usepackage[low-sup]{subdepth}
开始遇到错误。matlab-prettifier
如果我删除,subdepth
错误就会消失。如果我保留subdepth
但删除,breqn
错误也会消失。但我想在同一个 Latex 文件中同时使用这三个包。
这是 MWE
\documentclass[11pt]{article}%
\usepackage{matlab-prettifier}
\usepackage{breqn} %do not use this with tex4ht. added 4/2/16
\usepackage[low-sup]{subdepth} %added 4/29/16 to lower subscript
\begin{document}
\begin{lstlisting}
J = 8*u1-4
\end{lstlisting}
\end{document}
错误是 pdflatex foo.tex
(/usr/local/texlive/2015/texmf-dist/tex/latex/subdepth/subdepth.sty) (./foo.aux
) (/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1cmr.fd)
(/usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
)
! Missing { inserted.
<to be read again>
\global
l.10 J = 8*u1-4
?
我可以通过更改我的 Matlab 代码来解决这个问题,从J = 8*u1-4
到J = 8*u1+4
但这会使我的 Matlab 代码产生错误的结果,我想保持 Matlab 代码原样,但仍将其加载到 Latex 中。
文件列表
*File List*
article.cls 2014/09/29 v1.4h Standard LaTeX document class
size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
matlab-prettifier.sty 2014/06/19 v0.3 A package for prettyprinting Matlab so
urce code
textcomp.sty 2005/09/27 v1.99g Standard LaTeX package
ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
xcolor.sty 2007/01/21 v2.11 LaTeX color extensions (UK)
color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
infwarerr.sty 2010/04/08 v1.3 Providing info/warning/error messages (HO)
ltxcmds.sty 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
listings.sty 2015/06/04 1.6 (Carsten Heinz)
keyval.sty 2014/10/28 v1.15 key=value parser (DPC)
lstmisc.sty 2015/06/04 1.6 (Carsten Heinz)
listings.cfg 2015/06/04 1.6 listings configuration
breqn.sty 2015/08/11 v0.98d Breaking equations
expl3.sty 2015/12/20 v6326 L3 programming layer (loader)
expl3-code.tex 2015/12/20 v6326 L3 programming layer
l3pdfmode.def 2015/11/11 v6250 L3 Experimental driver: PDF mode
flexisym.sty 2015/08/11 v0.98d Make math characters macros
cmbase.sym 2007/12/19 v0.92
mathstyle.sty 2015/08/11 v0.98d Tracking mathstyle implicitly
calc.sty 2014/10/28 v4.3 Infix arithmetic (KKT,FJ)
subdepth.sty 2007/09/02 v0.1 Unify subscript depths
ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
supp-pdf.mkii
***********
2015 年
答案1
该subdepth
包更改了数学字体的一些\fontdimen
参数,并且必须在首次加载这些字体时执行此操作。 就您而言,首次加载发生在初始化期间lstlisting
,此步骤、所需的设置subdepth
以及存在之间的组合breqn
会改变全部数学中的字符,休息。
如果您之前有一个公式lstlisting
,则不会发生这种情况,因为subdepth
它在字体初始化时起作用。因此添加
\sbox0{$$}
之后\begin{document}
就会有帮助。
请注意,在进行字体大小更改时,也需要提前加载数学字体(当然,\footnotesize
如果您在那种情况下这样做的话)。lstlisting