考虑
\documentclass{article}
\usepackage{titlesec}
\def\bl#1 #2 {#1\textsuperscript{#2}\,}
\titleformat{\section}[runin]{}{}{0pt}{}[. ]
%\titleformat{\section}[runin]{}{}{0pt}{\bl}[. ]
\begin{document}
\section{3 a 21}
main text.
\end{document}
注释掉的行的目的是产生与 相同的效果,而\section{\bl 3 a 21}
不必为每个部分键入 \bl;但它产生了错误。可以做些什么来实现预期的结果吗?
答案1
答案2
您也可以不使用任何包来执行此操作。诀窍是将参数\section
作为括号组传递给代码的最后部分,因此如果该部分以接受参数的宏结尾,它将看到节标题;但您首先需要删除括号。请注意,使用三个参数定义内部宏,我们可以轻松添加最后的句点。
\documentclass{article}
\usepackage{showframe}% just for the example
\makeatletter
\renewcommand{\section}{%
\@startsection{section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{-1em}%
{\normalfont\process@section@title}%
}
\newcommand{\process@section@title}[1]{\process@section@title@aux#1\@nil}
\def\process@section@title@aux#1 #2 #3\@nil{%
#1\textsuperscript{#2} #3.%
}
\makeatother
\setcounter{secnumdepth}{0}
\begin{document}
\section{3 a 21}
Some text for the section.
\section{4 a 42}
Some text for the section.
\end{document}