ntheorem 中的缩进以及插入的图片

ntheorem 中的缩进以及插入的图片

我的问题补充到围绕放置在两个定理环境之间的 tikzpicture 进行包装. 从中可以看出CTAN:文本流,在类似定理(列表等)的环境中包装图形的方法设计很差。

唯一方法(我愿意相信我错了,答案是正确的),也就是允许将图片包裹在两个定理环境之间,这些图片都是从内部调用的宏insbox.tex,利用了的机制\parshape

但是这种方法有一个缺点。宏\InsertBox(R\L\C) {...}获取其参数并将定理环境的内容形成为具有全局\parindent长度的简单段落,而完全忽略定理环境定义的长度(labelwidth、labelsep、leftmargin 等)。

MWE 说明了问题

\documentclass[english]{article}
\usepackage{babel}
\usepackage{ntheorem}
\usepackage{caption}
\usepackage{lipsum}
\usepackage{tikz}


\theoremstyle{change}
%\theoremprework{\parindent=2em}
\newtheorem{theorem}{}[section]

\input{insbox.tex}
\begin{document}

    \section{title 1}
        \begin{theorem}\leavevmode\vspace{-\baselineskip}

        \InsertBoxR{6}{\parbox{5.2cm}{\raggedleft\begin{tikzpicture}
                \draw (0,0) rectangle (5,5);
                \end{tikzpicture}
                \captionof{figure}{}\label{mylabel1}}}[5]
        \lipsum[1]

    \end{theorem}
    \setcounter{section}{100} % ===== for showing problem ========
\begin{theorem}\leavevmode\vspace{-\baselineskip}\InsertBoxR{0}{\quad\makebox[5.2cm]{}}[3]
    \parindent = 10ex % =====  This length should be adjusted automatically depending on lalelwidth + labelsep
    \lipsum[2]
\end{theorem}

\end{document}

在此处输入图片描述

答案1

似乎段落\InsertBoxR就此结束。因此,文本被视为新文本,仅缩进。这可以通过撤消并插入标签的空间来\parindent纠正。下面,这是使用新宏完成的。\parindent\labelsep\thindent

我还删除了\quad第二条定理中的线\InsertBoxR,因为第二条定理中的线比第一条中的线短。

代码:

\documentclass[english]{article}
\usepackage{babel}
\usepackage{ntheorem}
\usepackage{caption}
\usepackage{lipsum}
\usepackage{tikz}


\theoremstyle{change}
%\theoremprework{\parindent=2em}
\newtheorem{theorem}{}[section]

\newcommand{\thindent}{%
    \setbox0\hbox{\rmfamily\bfseries\thetheorem}% for getting the label width
    \hspace*{-\parindent}% undo parskip
    \hspace*{\wd0}%        width of label
    \hspace*{\labelsep}%
}

\input{insbox.tex}
\begin{document}
\section{title 1}
\begin{theorem}\leavevmode\vspace{-\baselineskip}%
    \InsertBoxR{6}{\parbox{5.2cm}{\raggedleft
        \begin{tikzpicture}
        \draw (0,0) rectangle (5,5);
        \end{tikzpicture}
        \captionof{figure}{}\label{mylabel1}}}[5]%
    \thindent
    \lipsum[1]
\end{theorem}
\setcounter{section}{100} % ===== for showing problem ========
\begin{theorem}\leavevmode\vspace{-\baselineskip}\InsertBoxR{0}{\makebox[5.2cm]{}}[3]% removed \quad
    \thindent
    \lipsum[2]
\end{theorem}

\end{document}

结果:

在此处输入图片描述

相关内容