仅在外部模式下使用 \marginpar 宏(丢失浮点数)

仅在外部模式下使用 \marginpar 宏(丢失浮点数)

相关 我可以检测 LaTeX 是否处于垂直模式吗?

\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 模式,但目前没有直接测试。您可能需要在整个文档中“手动”跟踪段落的开头。

相关内容