如何删除当前段落的内容并从头开始“重新开始”?

如何删除当前段落的内容并从头开始“重新开始”?

我想使用第三方包中定义的环境,但无法修改。简化后的定义如下:

\newenvironment{myenv}[1]{
% some stuff here
\textbf{#1}
}{% some more stuff here
}

现在我想使用不带参数(或者带空参数)的环境。但是,行首仍有一些空格(源自环境定义中的换行符)。我想删除这些空格。

如何在不修改环境定义的情况下让环境的内容从行首开始?

这是一个简单的例子:

\documentclass{article}
% I cannot make changes from here ...
\newenvironment{myenv}[1]{
\textbf{#1}
}{}
% ... to here.
\begin{document}
\begin{myenv}{Argument}
Content
\end{myenv}

\begin{myenv}{}
Content Only
\end{myenv}
\end{document}

我希望第二行从与第一行相同的水平位置开始。

我当然可以使用某个固定大小的负片\hspace{},但我希望它适用于任意字体设置等。

顺便说一句,我不在乎解决方案是否丑陋,因为 LaTeX 代码将由脚本自动生成。

答案1

在此处输入图片描述

可以使用补丁来改变定义:

这里有两个问题

  1. 失踪%\textbf{#1}
  2. {}导致间距,因为\textbf{}

我添加了一个\string%和一个检查参数是否为空——\notblank{#1}{}{}检查是否#1为空,如果不是,则执行第二个参数中的代码。


\documentclass{article}
\usepackage{xpatch}%
% I cannot make changes from here ...
% Some statements by me (C.H.)
\newenvironment{myenv}[1]{% is missing
  \textbf{#1}% is missing
}{}
% ... to here.


\xpatchcmd{\myenv}{\textbf{#1}}{\notblank{#1}{\textbf{#1}}{}\string%
}{\typeout{Success}}{\typeout{Failed!}}

\begin{document}

Compare

\textbf{Argument}

Content only

\begin{myenv}{Argument}
  Content
\end{myenv}

\begin{myenv}{}
  Content Only
\end{myenv}
\end{document}

相关内容