2009-09-08 39 views
9

EDITAR: Como veo en la primera respuesta, subrayar es la palabra incorrecta. Quiero una línea debajo del encabezado de la sección, separando el encabezado del siguiente texto.¿Cómo subrayar encabezados de sección en LaTeX?

Quiero separar los títulos de las secciones del siguiente texto con una línea horizontal. En el momento en que utilizo el siguiente:

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

Pero que produce una línea, que es demasiado lejos de la sección de retirada de cabezales y cerca al texto siguiente. ¿Alguien tiene una mejor idea?

+0

Puesto que los formatos de comando sección de forma diferente para cada clase, siempre se podría copiar la clase que está utilizando y redefinir el comando '\ section' para poner el' hrule' en el lugar correcto. – dreamlax

+1

Como dices, cada clase lo formatea diferente. Preferiría una solución, que pueda usar en diferentes proyectos y que funcione incluso si cambias algo en particular (cambiando de libro a scrbook, por ejemplo). Eso puede suceder años más tarde por otra persona que no conoce la sección redefinida. Es por eso que me gustaría usar una solución más general. – Mnementh

+0

Esta pregunta parece estar fuera de tema porque se trata de LaTeX, que es más apropiado en tex.stackexchange.com. – templatetypedef

Respuesta

6

Usted puede hacer esto con el comando \sectionrule en el sectsty package.

+0

sectsty hace lo que quiero, pero tengo otro problema: tengo un libro (scrbook-documentclass) y uso del comando \ part. Eso ya no funciona con sectsty. ¿Algún consejo? – Mnementh

6

volver a escribir el comando como este debe hacer el truco:

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

Esto se evaluará como

\section { \underline {#1} } 

que a su vez produce títulos de las secciones subrayadas :)

+1

También subraya los nombres de las secciones en la tabla de contenido, que presumiblemente * no * es lo que desea. –

+0

Veo que hice mi pregunta mal. No quiero un subrayado en este sentido, realmente quiero una línea que separe el encabezado del siguiente texto. – Mnementh

3

Es posible echar un vistazo a la orden LaTeX \rule:

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

Sin embargo, eso es un comando de línea (horizontal), por lo que tendrá que utilizar algunos trucos para conseguir que en la posición y tamaño correctos (\noindent y \textwidth deberían ayudar un poco).

De lo contrario, puede utilizar el siguiente TeX plano

\smallskip 
\hrule height 2pt 
\smallskip 

Es realmente no encaja en la sintaxis de LaTeX, pero funciona como un encanto, y está garantizado para abarcar todo el ancho del texto.

4

He oído que el titlesec es más potente que el paquete sectsty, así que lo acabo de usar. Usted puede poner la línea horizontal antes de que el encabezado de sección usando:

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

o se puede poner después, con la ayuda de newcommand. Ver la sección 4.4 del titlesec manual.

2

Otra forma podría ser:

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