这个语法有什么问题?

这个语法有什么问题?

如果我写

\noindent\vskip 0ex plus 2ex\includegraphics[width={\textwidth plus 2pt minus 2pt}, angle=0]{J2-23-1}

它是正确的

但是,如果我写

\noindent\vskip 0ex plus 2ex\includegraphics[width={\textwidth plus 0.02\textwidth minus 0.02\textwidth}, angle=0]{J2-23-1}

它说“缺失数字视为零”。

但是,如果我包含了\usepackage[final]{pdfpages}即使我不使用它,上述错误信息也会消失。

谁能告诉我哪里出了问题?

答案1

不允许将粘合规范作为宽度或高度\includegraphics,它不支持灵活尺寸。

在第一种情况下,plus 2pt minus 2pt输出两次:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
  \noindent
  \includegraphics[
    width={\textwidth plus 2pt minus 2pt},
    angle=0
  ]{example-image}
\end{document}

Result

calc如果使用包,则其\setlength内部使用长度寄存器进行分配,因此粘合部分被读取和消耗,但从未使用过。

同样在第二种情况下,粘合规范被设置为普通文本(没有包calc):plus 0.02是文本,然后\textwidth是一个寄存器,它开始分配,但接下来m对于维度分配来说不是有效的数字并导致错误消息。

-> 避免在 的选项中使用粘合规范\includegraphics。它们没有用途,只会造成麻烦。尽管如此,可以使用跳过(长度)寄存器,它们在内部被强制转换为 dimen 寄存器,忽略粘合部分。如果无法避免粘合规范(来自某些用户宏或其他),可以将其用作解决方法:

\includegraphics[width=\glueexpr(\textwidth plus ... minus ...)\relax, ...]{...}

相关内容