LaTeX:规则为浮动环境

LaTeX:规则为浮动环境

我尝试使用浮点数规则,用来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}

相关内容