![这个语法有什么问题?](https://linux22.com/image/331644/%E8%BF%99%E4%B8%AA%E8%AF%AD%E6%B3%95%E6%9C%89%E4%BB%80%E4%B9%88%E9%97%AE%E9%A2%98%EF%BC%9F.png)
如果我写
\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}
calc
如果使用包,则其\setlength
内部使用长度寄存器进行分配,因此粘合部分被读取和消耗,但从未使用过。
同样在第二种情况下,粘合规范被设置为普通文本(没有包calc
):plus 0.02
是文本,然后\textwidth
是一个寄存器,它开始分配,但接下来m
对于维度分配来说不是有效的数字并导致错误消息。
-> 避免在 的选项中使用粘合规范\includegraphics
。它们没有用途,只会造成麻烦。尽管如此,可以使用跳过(长度)寄存器,它们在内部被强制转换为 dimen 寄存器,忽略粘合部分。如果无法避免粘合规范(来自某些用户宏或其他),可以将其用作解决方法:
\includegraphics[width=\glueexpr(\textwidth plus ... minus ...)\relax, ...]{...}