2009-09-08 14 views
9

EDIT: Comme je le vois dans la première réponse, souligner est le mauvais mot. Je veux une ligne sous le titre de la section, en séparant l'en-tête du texte suivant.Comment souligner les en-têtes de section dans LaTeX?

Je souhaite séparer les en-têtes de section du texte suivant par une ligne horizontale. En ce moment j'utilise les éléments suivants:

\newcommand{\tmpsection}[1]{} 
\let\tmpsection=\section 
\renewcommand{\section}[1]{\tmpsection{#1}\hrule\nobreak} 

Mais qui produit une ligne, qui est trop loin de la section cap et à proximité du texte suivant. Quelqu'un at-il une meilleure idée?

+0

Depuis les formats de commande de section différente pour chaque classe, vous pouvez toujours copier la classe que vous utilisez et redéfinir la commande '\ section' pour mettre le' hrule' dans le bon endroit. – dreamlax

+1

Comme vous le dites, chaque format de classe est différent. Je préférerais une solution, que je peux utiliser dans différents projets et qui fonctionne même si vous changez quelque chose en particulier (passer du livre au scrook par exemple). Cela peut arriver des années plus tard par quelqu'un d'autre, qui ne connaît pas la section redéfinie. C'est pourquoi je voudrais utiliser une solution plus générale. – Mnementh

+0

Cette question semble être hors-sujet car il s'agit de LaTeX, qui est plus approprié à tex.stackexchange.com. – templatetypedef

Répondre

6

Vous pouvez le faire avec la commande \sectionrule dans le sectsty package.

+0

sectsty fait ce que je veux, mais j'ai un autre problème: j'ai un livre (scrbook-documentclass) et en utilisant la commande \ part. Cela ne fonctionne plus avec le sectsty. Des conseils? – Mnementh

6

Réécriture votre commande comme celui-ci devrait faire l'affaire:

\newcommand{\tmpsection}[1]{} 
\let\tmpsection=\section 
\renewcommand{\section}[1]{\tmpsection{\underline{#1}}} 

Cette évaluera à

\section { \underline {#1} } 

qui à son tour produit des titres de section soulignés :)

+1

Il soulignera également les noms de section dans la table des matières, ce qui est sans doute * pas * ce que vous voulez. –

+0

Je vois que j'ai posé ma mauvaise question. Je ne veux pas de soulignement dans ce sens, je veux vraiment une ligne séparant le titre du texte suivant. – Mnementh

3

Vous pouvez jeter un oeil à la commande LATEX \rule:

\rule[raise-height]{width}{thickness} 

Cependant, c'est une commande en ligne (horizontale), de sorte que vous devrez utiliser une ruse pour obtenir à la bonne position et la taille (\noindent et \textwidth devrait aider un peu).

Sinon, vous pouvez utiliser le TeX

\smallskip 
\hrule height 2pt 
\smallskip 

plaine suivante Il ne correspond pas vraiment dans la syntaxe LaTeX, mais il fonctionne comme un charme, et est garantie pour couvrir toute la largeur du texte.

4

J'ai entendu dire que le titlesec est plus puissant que le paquet sectsty, donc je l'ai juste utilisé. Vous pouvez mettre la ligne horizontale avant l'en-tête de section à l'aide:

\usepackage{titlesec} 
\titleformat{\section}{\large\bfseries}{\thesection}{1em}{\hrule} 

ou vous pouvez le mettre après, avec l'aide de newcommand. Voir la section 4.4 du titlesec manual.

2

Une autre façon pourrait être:

\begin{center} 
\line(1,0){400} 
\end{center}