有没有办法定义一个 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}