在我的回答中将文本定位到部分下方,barbara beeton 评论说,也许我应该让这个新的“类似章节”的定义之后的第一个段落不缩进。
是的,我同意了,但我不知道该如何接受\par
。我发现了这个问题,类似 `\ignorespaces` 的宏用于忽略 `\par`,而 egreg 对此的回答看起来最有希望。我实际上很惊讶没有现成的 TeX 解决方案(也许有一个适用于 LaTeX 的解决方案)
我尝试对其进行调整,使后续文本不缩进。只有\par
在节式调用后没有出现 s 时,我才能成功。我的方法是采用 egreg 的\futurelet
/方法,并在其宏的最后\eat
一个之前添加 a ,其中定义为。如上所述,当s 出现在调用之后时,这种方法不起作用。\else\expandafter\shazam
\fi
\ignoreparsA
\shazam
\def\shazam{\noindent\expandafter\ignorespaces}
\par
\mysection
\documentclass[]{article}
\usepackage{rotating,stackengine,lipsum}
\newcommand{\mysection}[1]{\leavevmode\llap{\smash{%
\belowbaseline[\dimexpr\baselineskip-.8\ht\strutbox\relax]{%
\rotatebox{90}{#1}}}\hspace{5.5ex}}\par%
\def\shazam{\noindent\expandafter\ignorespaces}%
\expandafter\ignorepars}
\setstackEOL{\cr}
% modified egreg's answer from
% https://tex.stackexchange.com/questions/279652/macro-like-ignorespaces-for-ignoring-pars
% Trying to end on a \noindent, without success
\long\def\eat#1{\ignorepars}
\def\ignorepars{\futurelet\next\ignoreparsA}
\def\ignoreparsA{\ifx\next\par\expandafter\eat\else\expandafter\shazam\fi}
\begin{document}
\mysection{publications}
\lipsum[1]
\mysection{\Longstack[r]{a longer\cr title name}}
\lipsum[4]
\end{document}
我不知道所引用问题的 OP(enax)是否需要\noindent
,但它似乎很有用,能够忽略\par
然后发出\noindent
。
答案1
你只想调用\@afterindentfalse\@afterheading
此外,我还从标题偏移中删除了段落缩进
\documentclass[]{article}
\usepackage{rotating,stackengine,lipsum}
\makeatletter
\newcommand{\mysection}[1]{\par\noindent\llap{\smash{%
\belowbaseline[\dimexpr\baselineskip-.8\ht\strutbox\relax]{%
\rotatebox{90}{#1}}}\hspace{5pt}}\par%
\@afterindentfalse\@afterheading}
\makeatother
\setstackEOL{\cr}
% modified egreg's answer from
% http://tex.stackexchange.com/questions/279652/macro-like-ignorespaces-for-ignoring-pars
% Trying to end on a \noindent, without success
\begin{document}
\mysection{publications}
\lipsum[1]
\mysection{\Longstack[r]{a longer\cr title name}}
\lipsum[4]
\end{document}