回到上一段的结尾

回到上一段的结尾

有没有办法定义一个 TeX 命令来检查文本中的当前位置是否位于段落的开头,如果是,则返回到上一个段落的结尾?

编辑:目的是解决以下问题。我有一堆包含几个多项选择题的文件,格式如下:

\begin{problem}
... the statement of the question ...

\choices
\end{problem}

我定义了\choices一些命令来显示答案的选项。问题是,现在我想让选项显示在前一段的最后一行(与\hfill问题陈述分开)以获得一些空间;相反,现在答案的选项开始一个新段落。我想进行修改,\choices以便它自动清除之前的空行(如果有一行(或多行)),这样我就不必手动执行(这会非常痛苦)。

答案1

在 TeX 级别,一旦您发布了\par原语,答案是否定的,您无法通过已排版的材料“备份”。但是,可以构建一个“galley”(用于按段落布局文本的系统),它不会插入\par 原始当你留下一个空行(插入一个\par 令牌:不一定与 TeX 的\par原始相同!)。这种方法在LaTeX3 样板模块,并且可以将一些内容添加到最后一段的末尾,作为启动下一段的代码的一部分。 问题是,虽然此代码有效,但它会破坏任何假设\par(大部分 LaTeX2e 内核、执行部分、显示环境等的任何内容)。 因此,目前它不是用于“一般用途”的读物。 一个“原理证明”演示:

\documentclass{article}
\usepackage{l3galley,xparse}
\ExplSyntaxOn
\NewDocumentEnvironment { problem } { }
  {
    \cs_set_protected:Npn \choices
      {
        \s__par_omit
        \tl_gset:Nn \g_galley_par_end_hook_tl { MARK }
      }
  }
  { }
\ExplSyntaxOff
\begin{document}
Some demo text.

\begin{problem}
  Some demo text.

  Some demo text.

  Some demo text.

  \choices
\end{problem}

\end{document}

相关内容