为什么添加 subdepth 包会导致 lstlisting 给 Matlab 加载文件带来错误?

为什么添加 subdepth 包会导致 lstlisting 给 Matlab 加载文件带来错误?

如果每次我发现 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-4J = 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

相关内容