43

In some papers and books you see that author uses §1.3 instead of section 1.3. How § sign can be added before section (or part, chapter, ...) number automatically? Please mention any useful tip about this style.

see also: Fancy cross-referencing

34

You could use the cleveref package and redefine \crefname{section}:

\documentclass{article}

\usepackage[utf8]{inputenc}

\usepackage{cleveref}
\crefname{section}{§}{§§}
\Crefname{section}{§}{§§}

\begin{document}

\section{foo}\label{sec:foo}

Some text.

\section{bar}

As explained in \cref{sec:foo}~\dots

\end{document}

enter image description here

  • 18
    +1 you can avoid inputenc by using \S – cmhughes Jun 15 '12 at 3:59
  • 3
    @lockstep Little late to the party here, but can the space after § be removed? – jstephenson Feb 22 '13 at 17:12
  • 8
    @jstephenson Use \crefformat{section}{§#2#1#3}. – lockstep Feb 24 '13 at 11:42
22

hyperref provides \autoref{<label>} that checks the counter used in the reference and sets a label with a prepended \<counter>autorefname. Here's a small example:

enter image description here

\documentclass{article}
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\renewcommand{\sectionautorefname}{\S}
\begin{document}
\section{A section}
See~\autoref{another-section}.
\section{Another section}\label{another-section}
\end{document}​
  • 9
    What I have done is the past is also redefined \subsectionautorefname and \subsubsectionautorefname to be the same as \sectionautorefname so that you can get "See § 2.1" or "See § 3.2.1". If one also uses autopageref, one can also redefine \pageautorefname to "p." to get "See § 3.2 on p. 4" – ArTourter Jun 14 '12 at 18:39
14

Often forgotten is the macro \p@<counter>. If LaTeX generates a reference value, this is not just \the<counter> but \p@<counter>\the<counter>. If a new counter is defined, \p@<counter> is defined empty. But it can be redefined to add a prefix, for example. Thus there is no need for additional packages.

\documentclass{article}

\makeatletter
\renewcommand*{\p@section}{\S\,}
\renewcommand*{\p@subsection}{\S\,}
\makeatother

\begin{document}

\section{Hello World}
\label{sec:hello}
\subsection{Subsection A}
\subsection{Subsection B}
\subsection{Subsection C}
\label{sec:C}

See \ref{sec:C} inside \ref{sec:hello}.
\end{document}
  • 1
    Should that be \renewcommand*{\p@subsection}{\S\S\,} instead? – J. C. Salomon Aug 7 '12 at 5:03
  • 4
    The double form of the section sign is used, if it refers to the plural form. – Heiko Oberdiek Aug 7 '12 at 6:43
5

I spent a little time figuring the solution for me so I thought I'd share. In case, like me:

  • You don't want to use the package cleveref (cf lockstep's answer) because it is incompatible with the showonlyrefs option of the package mathtools
  • You would rather not do Heiko Oberdiek's solution because you'd like to maintain the distinction between \ref and \autoref
  • You like the hyperref package and Werner's solution but it does not work because you are using the package babel

Here is the fix, found here:

\addto\extrasenglish{
  \def\sectionautorefname{\S}
}

Here it is in a minimal working example:

\documentclass{article}

\usepackage[english]{babel}
\usepackage{mathtools}
\usepackage{hyperref}

\mathtoolsset{showonlyrefs=true}

\addto\extrasenglish{%
  \def\sectionautorefname{\S}%
}    

\begin{document}

\section{Foo}
Cf \autoref{sec:bar}.
\section{Bar}\label{sec:bar}

\end{document}​

enter image description here

  • Why does using babel prevent Werner's solution from working? Also what is the purpose of the % markers at the end of the two lines where you apply your solution? – Anonymous Dec 14 '17 at 15:57
  • @Anonymous % at the end of line is for Tex to ignore the newline when {...} spans multiple lines. I'm not too clear about the mechanics, but it does solve errors. – Apiwat Chantawibul Mar 12 '18 at 13:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.