构建一个在下一个换行符之后开始的框

构建一个在下一个换行符之后开始的框

我有理由在框中插入文本注释。为此,我定义了以下命令:

\newcommand{\Lnote}[1]{%
\textsuperscript{\footnotesize{\thelnote}}
\begin{center}
\fbox{\parbox{0.7\textwidth}{\textsuperscript{\footnotesize{\thelnote}}#1}}
\end{center} 
\stepcounter{lnote}
}

这满足了我的大部分要求:注释通过 lnote 计数器进行编号,等等。但是,我希望包含注释的框不会中断文本,而是在下一个换行符处出现。也就是说,如果我这样写:

Some really long thing that takes up more than one line.\Lnote{Something that should be noted.} You know, something that keeps on going on and on.

我希望它不要发生:

有些内容很长,占用不止一行。

框中写着“需要注意的事项”。

你知道,有些事情会不断发生。

反而

有些内容很长,需要多行。你知道,有些内容持续

框中写着“需要注意的事项”。

持续不断。

(注意:我在示例中省略了我想要和不想要的编号。但我确实想要编号,就像命令中已经存在的编号一样。重要的是,我总是希望方框内的注释内容出现在下一个换行符处,而不是注释的位置,尽管我确实希望 lnote 编号出现在调用 \Lnote 命令的位置。)

答案1

使用该\vadjust功能,再加上一些低级构造。

\documentclass{article}
\usepackage{lipsum}

\makeatletter
\newcommand\Lnote[1]{%
  \@bsphack
  \vadjust{%
    \nopagebreak
    \smallskip
    \moveright1cm\hbox{%
      \fbox{\parbox{\dimexpr\textwidth-2cm}{#1}}%
    }%
  }%
  \@esphack
}
\makeatother

\begin{document}

Some really long thing that takes up more than one line.
\Lnote{Boxed in ``Something that should be noted.'' \lipsum[3]}
You know, something that keeps on going on and on.

\end{document}

在此处输入图片描述

答案2

我使用\tabto*宏和包\TabPrevPostabto来到达行的中间并返回。在中间,我使用包\bclap的底部中心搭接stackengine来制作方框。这样,后续文本就可以继续在方框之前的行上,使用正常的 LaTeX 换行流程。

在这里我将其实现为\Lnote{}。编辑以模仿OP布置的外观(上标计数器,\parbox.7\textwidth

\documentclass{article}
\usepackage{tabto,stackengine,lipsum}
\newcounter{lnote}
\newcommand\Lnote[1]{%
  \stepcounter{lnote}%
  \tabto*{.5\textwidth}%
  \bclap[1.3\baselineskip]{\addstackgap[3pt]{\fbox{%
    \textsuperscript{\footnotesize{\thelnote}}%
      \parbox[t]{0.7\textwidth}{#1}}}}%
  \tabto*{\TabPrevPos}%
}
\begin{document}
Some really long thing that takes up more than one line.
\Lnote{Boxed in ``Something that should be noted.'' \lipsum[4]}
You know, something that keeps on going on and on.
\Lnote{Next one}
\lipsum[1]
\end{document}

在此处输入图片描述

答案3

你可以使用generic包非常简单地做到这一点ìnsbox,更准确地说,使用它的\InsertBoxC命令。然后一切都会自动居中,所以你不必center在 的定义中使用环境\Lnote

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}

\input{insbox}
\newcounter{lnote}
\newcommand{\Lnote}[1]{
\stepcounter{lnote}\vspace*{-\fboxsep}
\fbox{\parbox{0.7\textwidth}{\textsuperscript{\footnotesize{\thelnote}}#1}}
}

\begin{document}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec varius dapibus metus eget ultrices. Nulla sagittis mauris rutrum, blandit augue eget, laoreet augue. Phasellus enim odio, sagittis in mi sed, fringilla mollis odio. Phasellus quis purus ultricies, tempor purus at, tempus quam. Donec ultricies, ligula ac pretium porttitor, nibh nunc %
\InsertBoxC{\Lnote{Boxed in ``Something that should be noted.''}}%
Integer eros nibh, cursus at est sed, volutpat tristique justo. Donec ornare facilisis lorem, id feugiat elit pellentesque at. Nulla odio mauris, luctus sed faucibus id, dignissim dictum velit. Morbi vehicula velit at massa tristique rhoncus.

\end{document} 

在此处输入图片描述

相关内容