Erweiterung? Schmutzige Tricks?

Erweiterung? Schmutzige Tricks?

In Betracht ziehen

\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}

Die auskommentierte Zeile sollte das Äquivalent von erzeugen, \section{\bl 3 a 21}ohne dass für jeden Abschnitt \bl eingegeben werden muss. Allerdings trat ein Fehler auf. Kann etwas getan werden, um das gewünschte Ergebnis zu erzielen?

Antwort1

Sie müssen das Argument erfassen, bevor Sie es an weitergeben \bl. Im Folgenden erfassen wir es mit , \@blbevor wir es an weitergeben \bl:

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{titlesec}

\makeatletter
\def\@bl#1{\bl#1}
\def\bl#1 #2 {#1\textsuperscript{#2}\,}
\titleformat{\section}[runin]{}{}{0pt}{\@bl}[. ]
\makeatother

\begin{document}
\section{3 a 21}
main text.
\end{document}

Antwort2

Sie können es auch ohne Paket tun. Der Trick besteht darin, dass das Argument \sectionals geschweifte Gruppe an den letzten Teil des Codes übergeben wird. Wenn dieser Teil also mit einem Makro endet, das ein Argument annimmt, wird der Abschnittstitel angezeigt. Sie müssen jedoch zuerst die Klammern entfernen. Beachten Sie, dass wir beim Definieren des inneren Makros mit drei Argumenten problemlos den letzten Punkt hinzufügen können.

\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}

Bildbeschreibung hier eingeben

Antwort3

Dies könnte man als „schmutzig“ bezeichnen:

\documentclass{article}
\usepackage{titlesec}

\def\bl#1 #2 {#1\textsuperscript{#2}\,}
\titleformat{\section}[runin]{}{}{0pt}{}[. ]
\let\oldsect=\section
\def\section#1{\oldsect{\bl#1}}
\begin{document}
\section{3 a 21}
main text.
\end{document}

3a 21. Haupttext.

verwandte Informationen