\documentclass{article}
\newcommand{\wm}{%
\ifinner INNER \else OUTER\fi
MODE
}
\newcommand{\mm}{%
(trying margin par)\ifinner(no margin par)\else\marginpar{yes marginpar}\fi
}
\begin{document}
\begin{table} \caption{Table}
\wm
...
\mm
---
\end{table}
\bigskip
Text: \wm
MPAR: \mm
\end{document}
这告诉我我的浮点数丢失了。输出是
那么我该如何编写一个宏,只在允许的情况下设置 marginpar ,并且不会产生这里的小副作用(即,应该说“(无 margin par)”并且不会给出丢失浮点错误)?
PS: 当它工作时,\marginpar 技巧:不视为浮点数非常整洁。
答案1
您的表格内部\wm
是在浮动框开始处以垂直模式执行的,但是由于那是一个框,而不是主垂直列表,即内部 v 模式,但您随后排版INNER MODE ... (trying margin par)
以开始一个段落,因此您处于外部 h 模式,所以测试为\mn
假,所以它尝试失败的 marginpar。
您想要测试从外部 v 模式开始的段落是否处于外部 h 模式,但目前没有直接测试。您可能需要在整个文档中“手动”跟踪段落的开头。