为什么仅使用独立包和导入包时才会显示字体丢失消息?

为什么仅使用独立包和导入包时才会显示字体丢失消息?

lstlisting我花了很长时间才找到这个问题的原因。由于某些奇怪的原因,当我使用独立包时,由于 Latex 找不到某些字体,我的 Matlab 代码中的字体发生了变化。

我无法找到原因以及如何解决它。当我不包含standalone并使用lstlisting字体时,字体就会找到,并且是我想要的。这是 MWE,它有main.tex作为父级,以及HW1.tex使用加载的子级import

\documentclass[11pt,openany]{book}%
\usepackage[T1]{fontenc}
\usepackage{standalone}   
\usepackage{import}
\usepackage[numbered,framed]{matlab-prettifier}
\lstset{   
    style              = Matlab-editor,
    basicstyle=\ttfamily\small,
    breaklines         = false,
    escapechar         = `,
    mlshowsectionrules = true 
}
\begin{document}
\subimport*{./}{HW1}
\end{document}

该文件位于HW1.tex同一文件夹中,仅列出了一些用于说明的小 Matlab 代码。如下

\documentclass[11pt]{article}%
\begin{document}
\begin{lstlisting}
function nma_HW1_problem2_ECE719
%function to evaluate J at corner of the cube and do
%some syms caluclations.

syms u1 u2 u3;
J = 8*u1*u2*u3-4*u1*u2-4*u1*u3-4*u2*u3+2*u1+2*u2+2*u3-1;

%first find J value at all the corners, the coordinates  are
a      = {[-1 1] [-1 1] [-1 1]};
coords = allcomb(a{:});
end
\end{lstlisting}
\end{document}

现在我使用编译 main.tex pdflatex,这就是我得到的结果

Mathematica 图形

现在,当我做同样的事情,但不使用import和时standalone,这就是我得到的结果。这是现在修改后的main.tex

\documentclass[11pt,openany]{book}%
\usepackage[T1]{fontenc}

\usepackage[numbered,framed]{matlab-prettifier}
\lstset{   
    style              = Matlab-editor,
    basicstyle=\ttfamily\small,
    breaklines         = false,
    escapechar         = `,
    mlshowsectionrules = true 
}
\begin{document}
\begin{lstlisting}
function nma_HW1_problem2_ECE719
%function to evaluate J at corner of the cube and do
%some syms caluclations.

syms u1 u2 u3;
J = 8*u1*u2*u3-4*u1*u2-4*u1*u3-4*u2*u3+2*u1+2*u2+2*u3-1;

%first find J value at all the corners, the coordinates  are
a      = {[-1 1] [-1 1] [-1 1]};
coords = allcomb(a{:});
end
\end{lstlisting}
\end{document}

相同的代码。不同之处在于我将代码放在父文件中而不是子文件中。我使用 pdflatex 编译上述内容,得到以下结果

Mathematica 图形

显然,由于字体缺失问题,它与第一种情况不同。

standalone当我编译包含和的案例时,我确实看到了字体问题import。但我不明白为什么它不能使用某些字体,但当我删除这些包时它确实找到了字体。这些是我在顶部案例中收到的警告:

(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty))
(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
(./HW1.tex

LaTeX Font Warning: Font shape `T1/cmtt/m/n' undefined
(Font)              using `T1/cmr/m/n' instead on input line 11.

) [1{/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./main.aux)

LaTeX Font Warning: Some font shapes were not available, defaults substituted.

 ){/usr/local/texlive/2015/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}
</usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb></

在第二种情况下,上述消息不会出现。但我不知道如何解决这个问题。

TL 2015. Linux. 这是第一个案例编译的文件列表。

 *File List*
    book.cls    2014/09/29 v1.4h Standard LaTeX document class
    bk11.clo    2014/09/29 v1.4h Standard LaTeX file (size option)
 fontenc.sty
   t1enc.def    2005/09/27 v1.99g Standard LaTeX file
standalone.sty    2015/07/15 v1.2 Package to include TeX sub-files with preambl
es
ifluatex.sty    2010/03/01 v1.3 Provides the ifluatex switch (HO)
   ifpdf.sty    2011/01/30 v2.3 Provides the ifpdf switch (HO)
 ifxetex.sty    2010/09/12 v0.6 Provides ifxetex conditional
 xkeyval.sty    2014/12/03 v2.7a package option processing (HA)
 xkeyval.tex    2014/12/03 v2.7a key=value parser (HA)
currfile.sty    2013/02/01 v0.7b Provides the file path elements of the current
 input file
kvoptions.sty    2011/06/30 v3.11 Key value format for package options (HO)
 ltxcmds.sty    2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
kvsetkeys.sty    2012/04/25 v1.16 Key value parser (HO)
infwarerr.sty    2010/04/08 v1.3 Providing info/warning/error messages (HO)
etexcmds.sty    2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
filehook.sty    2011/10/12 v0.5d Hooks for input files
gincltex.sty    2011/09/04 v0.3 Include external LaTeX files like graphics
svn-prov.sty    2010/04/24 v3.1862 Package Date/Version from SVN Keywords
adjustbox.sty    2012/05/21 v1.0 Adjusting TeX boxes (trim, clip, ...)
 adjcalc.sty    2012/05/16 v1.1 Provides advanced setlength with multiple back-
ends (calc, etex, pgfmath)
trimclip.sty    2012/05/16 v1.0 Trim and clip general TeX material
graphicx.sty    2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
graphics.sty    2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR)
    trig.sty    1999/03/16 v1.09 sin cos tan (DPC)
graphics.cfg    2010/04/23 v1.9 graphics configuration of TeX Live
  pdftex.def    2011/05/27 v0.06d Graphics/color for pdfTeX
collectbox.sty    2012/05/17 v0.4b Collect macro arguments as boxes
tc-pdftex.def    2012/05/13 v1.0 Clipping driver for pdftex
ifoddpage.sty    2011/09/13 v1.0 Conditionals for odd/even page detection
varwidth.sty    2009/03/30 ver 0.92;  Variable-width minipages
filemod-expmin.sty    2011/09/19 v1.2 Get and compare file modification times (
expandable; minimal)
  import.sty    2009/03/23  v 5.1
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
listings.sty    2015/06/04 1.6 (Carsten Heinz)
 lstmisc.sty    2015/06/04 1.6 (Carsten Heinz)
listings.cfg    2015/06/04 1.6 listings configuration
  ts1cmr.fd    2014/09/29 v2.5h Standard LaTeX font definitions
supp-pdf.mkii
pdftexcmds.sty    2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO)
epstopdf-base.sty    2010/02/09 v2.5 Base part for package epstopdf
  grfext.sty    2010/08/19 v1.1 Manage graphics extensions (HO)
kvdefinekeys.sty    2011/04/07 v1.3 Define keys (HO)
epstopdf-sys.cfg    2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
     HW1.tex
 ***********

问题是:为什么仅使用独立包和导入包时会出现字体丢失消息?

答案1

使\ttfamily字体可用于主文档,我通过\setbox0=\hbox{\ttfamily}在序言中输入最后一项来做到这一点,这样在\rmfamily加载时就会保留文档\ttfamily

可能还有更多官方方法来提供字体系列。例如Xelatex\usepackage{fontspec} \newfontfamily{\ttfamily}{Courier New}允许加载 tt 字体而无需实际调用\ttfamily宏。

似乎\subimport只有当字体已在主文档中可用时,它才能使用。因此,必须确保在调用之前提供所需的字体\subimport

\documentclass[11pt,openany]{book}%
\usepackage[T1]{fontenc}
\usepackage{standalone}   
\usepackage{import}
\usepackage[numbered,framed]{matlab-prettifier}
\lstset{   
    style              = Matlab-editor,
    basicstyle=\ttfamily\small,
    breaklines         = false,
    escapechar         = `,
    mlshowsectionrules = true 
}
\setbox0=\hbox{\ttfamily}
\begin{document}
\subimport*{./}{HW1}
\end{document}

与 结合HW1.tex,这将以\ttfamily字体形式生成列表。

答案2

这个问题与独立无关。您需要它,因为您的输入有一个前导码,但使用正常输入也会遇到类似的问题。

问题在于 \subimport* 命令。它改变了搜索路径,因此 texmf 树中的文件不再可用。这通常不是什么大问题,因为您很少在文档主体中从那里输入文件。但例外是 fd 文件:第一次使用字体时会加载这些文件。因此,在您的文档中,无法设置 tt 字体,因为t1cmtt.fd未找到。

为了避免该问题:要么使用无星号的命令,要么通过在主文档中发出命令强制 Latex 提前\subimport{./}{HW1}读取。t1cmtt.fd\ttfamily

相关内容