The default style is section number and then section title, however I want it the other way around. Haven't been able to find a solution that doesn't give me strange errors, so any help would be appreciated.
3 Answers
You can use the titlesec
package:
\documentclass{article}
\usepackage[explicit]{titlesec}
\titleformat{\section}{\normalfont\Large\bfseries}{}{0em}{#1\ \thesection}
\begin{document}
\section{A Test Section}
\section{Another Test Section}
\end{document}
Similar redefinitions can be done for the other sectional units, if required.
-
-
1Omitting a section from numbering with * doesn't work using this method, is there an alternative to achieve this? Oct 18, 2018 at 20:00
-
1@JordanMackie, a quick workaround is to use Gonzalo's hack for
subsubsection
instead, while keepingsection
unchanged (assuming you don't otherwise use subsubsection). In the above,\section
becomes\subsubsection
and\thesection
becomes\thesubsubsection
.– PatrickTAug 5, 2020 at 0:21
In ConTeXt you can use
\setuphead[alternative=command, command=\swap]
\unexpanded\def\swap#1#2{#2\space#1}
\starttext
\startTEXpage[offset=5mm]
\chapter{A chapter}
\section{A section}
\subsection{A subsection}
\stopTEXpage
\stoptext
which gives
-
5After seeing some of the answers that you have given using ConTeXt which I've also answered but using LaTeX, I am increasingly tempted to start studying ConTeXt seriously. Jun 2, 2012 at 17:08
-
Here is an example (MWE) for the standard report
-class. The code is copied from Vincent Zoonekynd and modified. The code for the book
-class will be little different:
\documentclass{report}
\makeatletter
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\Huge \bfseries #1 \quad
\ifnum \c@secnumdepth >\m@ne
\Huge\bfseries
\thechapter
\par\nobreak
\fi
\vskip 40\p@
}}
\def\@makeschapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright
\normalfont
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
\makeatother
\begin{document}
\chapter*{Test}
\chapter{Introduction}
\end{document}
And if you use article
-class and only needs \section
, here more code from the same source, slightly modified to suit your needs:
\documentclass{article}
\usepackage{lipsum}
\makeatletter
\def\section{\@ifstar\unnumberedsection\numberedsection}
\def\numberedsection{\@ifnextchar[%]
\numberedsectionwithtwoarguments\numberedsectionwithoneargument}
\def\unnumberedsection{\@ifnextchar[%]
\unnumberedsectionwithtwoarguments\unnumberedsectionwithoneargument}
\def\numberedsectionwithoneargument#1{\numberedsectionwithtwoarguments[#1]{#1}}
\def\unnumberedsectionwithoneargument#1{\unnumberedsectionwithtwoarguments[#1]{#1}}
\def\numberedsectionwithtwoarguments[#1]#2{%
\ifhmode\par\fi
\removelastskip
\vskip 3ex\goodbreak
\refstepcounter{section}%
\hbox to \hsize{%
\vtop{\parindent=0pt \leavevmode\Large\bfseries\raggedright #2\quad\thesection\par}%
}
\vskip 2ex\nobreak\noindent%
\addcontentsline{toc}{section}{%
\protect\numberline{\thesection}%
#1}%
\ignorespaces}
\def\unnumberedsectionwithtwoarguments[#1]#2{%
\ifhmode\par\fi
\removelastskip
\vskip 3ex\goodbreak
\hbox to \hsize{%
\vtop{\parindent=0pt\leavevmode\Large\bfseries\raggedright #2\par}%
}
\vskip 2ex\nobreak\noindent%
\addcontentsline{toc}{section}{%
#1}%
\ignorespaces}
\makeatother
\pagestyle{empty}
\begin{document}
\lipsum[1-2]
\section*{Introduction}
\lipsum[3-4]
\section{Introduction}
\lipsum[5-6]
\end{document}
In any case, it demonstrates clearly how much simpler life is due to titlesec
and secstyle
.
-
-
1Code for
\section
is added. Much more work than I anticipated. Use ofsecsty
ortitlesec
is recommended. (Or useKOMA-script
ormemoir
.)– SveinungJun 4, 2012 at 13:07