缩进 `table` 和 `figure` 环境

缩进 `table` 和 `figure` 环境

这是创建类似缩进嵌套的枚举环境。该问题的公认解决方案效果很好,但它无法处理像\begin{table}-\end{table}和这样的浮动环境\begin{figure}-\end{figure}。缩进此类浮动环境的方法是什么?

答案1

如果你希望浮点数符合当前环境的宽度,那么你很可能根本不希望它们浮动。以下代码假设通过重新定义figureminipage,设置常规\caption使用capt-of\captionof{figure}

在此处输入图片描述

\documentclass{article}

\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{changepage,etoolbox}
\usepackage{environ,capt-of}

\newenvironment{enumlike}[1][15pt]{%
  \begin{adjustwidth}{#1}{0pt}% Only indent on left side
}{%
  \end{adjustwidth}%
}

\let\oldfigure\figure% Store original figure float environment
\let\endoldfigure\endfigure
\RenewEnviron{figure}[1][H]{% Update figure environment
  \par\vspace{\intextsep}% Assume in-text placement, so insert appropriate vertical spacing
  \noindent
  % \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
  \patchcmd{\BODY}{\caption}{\captionof{figure}}{}{}% Replace \caption with \captionof{figure} inside \BODY
  % Set "figure"
  \begin{minipage}{\linewidth}
    \BODY
  \end{minipage}
  \par\vspace{\intextsep}% Assume in-text placement, so insert appropriate vertical spacing
}

\begin{document}

\lipsum[1]

\begin{enumlike}

  \lipsum[2]

  \begin{figure}[h]
    \includegraphics[height=40mm,width=\linewidth]{example-image}
    \caption{An indented figure}
  \end{figure}    

\end{enumlike}

\lipsum[3]

\end{document}

可以对table浮点数进行类似的重新定义。

答案2

您可以使用链接问题中给出的解决方案,但您必须将环境放在环境enumlike里面。figuretable

\documentclass{article}

\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{changepage}
\usepackage{tabularx}

\newenvironment{enumlike}[1][15pt]{%
    \begin{adjustwidth}{#1}{0pt}% Only indent on left side
    }{%
    \end{adjustwidth}%
}

\begin{document}
    
\lipsum[1][1-5]
\begin{figure}[h]
    \begin{enumlike}
        \includegraphics[height=40mm, width=\linewidth]{example-image}
        \caption{An indented figure}
    \end{enumlike}
\end{figure}    
\lipsum[1][1-5]
\begin{table}[h]
    \begin{enumlike}[50pt]
        \begin{tabularx}{\linewidth}{|X|X|X|} \hline
            some & meaningless & text \\ \hline
            some & meaningless & text \\ \hline
            some & meaningless & text \\ \hline
        \end{tabularx}
        \caption{An even more indented table}
    \end{enumlike}
\end{table}

\end{document}

缩进图表

不过,我建议你在添加图片时坚持\centering使用类似的东西width=0.9\linewidth。只有左侧缩进对我来说看起来很奇怪。

相关内容