我尝试使用浮点数规则,用来float.sty
创建一个新的浮点数类型,但在新的定义环境中我无法使用\linewidth
,因为使用会导致缺失数字错误。有人知道如何解决这个问题吗?
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{float}
\newfloat{rule}{H}{rule}[section]
\floatname{rule}{Rule}
\begin{document}
\begin{rule}
\rule{linewidth}{10cm}
\caption{Float 3}
}\end{rule}
\end{document}
答案1
\rule
已经被定义为经典\rule
命令,因此 float 环境名称rule
必须与 冲突\rule
。
究竟出了什么问题?
我们假设\newfloat{rule}{...}{...}
如 OP 中所做的那样。
- 使用
\rule{linewidth}{10cm}
inside of\begin{rule}...\end{rule}
将失败,因为有一个嵌套的环境,没有\endrule
使用
\rule{\linewidth}{10cm}
将失败,因为\linewidth
现在是一个长度宏,没有进一步解释,它将给出!缺失数字,视为零。
错误。用“更正”它
\the\linewidth
是没有用的,因为缺少的\endrule
语句会导致另一个错误。
解决方案:使用不同的名称,例如myrule
浮动环境。
}
在 和之前还有一个错误\end{rule}
,它必须读取\rule{\linewidth}{10cm}
,即,长度宏必须用 - 字符明确指定\
。
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{float}
\newfloat{myrule}{H}{rule}[section]
\floatname{myrule}{Rule}
\begin{document}
\begin{myrule}
\rule{\linewidth}{10cm}
\caption{Float 3}
\end{myrule}
\end{document}