> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/es/mas-temas/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# Cómo escribir un archivo de clase LaTeX y diseñar tu propio CV (Parte 1)

Parte 1 | [Parte 2](/latex/es/mas-temas/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**Autor: James Allen (marzo de 2011)**

Todo el mundo quiere un CV de aspecto profesional y no faltan plantillas de LaTeX que te darán uno. Sin embargo, si eres como yo, querrás que tu CV sea tuyo y hacerlo a tu manera. Eso significa que necesitas poder personalizar por ti mismo el aspecto y la presentación, algo que en LaTeX puede ser notoriamente difícil. En esta serie de entradas del blog espero guiarte en la creación de tu propio archivo de clase personalizado y mostrarte que puede ser fácil dar formato a tu CV exactamente como quieres. Nos enfocaremos en un estilo de CV, pero los métodos serán idénticos para cualquier tipo de documento.

### ¿Qué es un archivo de clase?

Cuando escribes `\documentclass{article}` en tu archivo de LaTeX, estás incluyendo el archivo de clase `article.cls`. Esto define todos los comandos como `\section` y `\title` que sirven para estructurar tu documento. También configura cómo estos comandos afectan al formato y al diseño de la página.

### Configurando tu propio archivo de clase

La forma más elegante de personalizar el formato de un documento es mantener toda esa información en un archivo de clase personal. Esto mantiene la estructura de tu documento claramente separada del formato y permite reutilizarlo fácilmente. Es fácil configurarlo, así que crea un documento llamado cv.tex con el siguiente contenido:

```latex
\documentclass{my_cv}
\begin{document}
\section{Educación}
\subsection{Universidad de Ningún Lugar}
\section{Trabajo}
\subsection{ABC Limited.}
\end{document}
```

Esto intenta cargar tu archivo de clase personalizado `my_cv.cls`, que todavía no existe. Crea `my_cv.cls` en el mismo directorio que `cv.tex` y escribe en él la siguiente línea:

```latex
\LoadClass{article}
```

Si compilas tu documento ahora, deberías ver los encabezados con el estilo predeterminado de article.

Entonces, ¿qué ha pasado aquí? Los archivos de clase necesitan contener mucha información de formato y configuración interna para que LaTeX funcione correctamente, pero no queremos tener que introducirlo todo manualmente. En su lugar, podemos basar nuestro nuevo archivo de clase en `article.cls`. Usamos `\LoadClass` incluir `article.cls` y cargamos todos los comandos y estilos definidos en él. Observa que no usamos el habitual `\documentclass` comando para incluir `article.cls` porque `\documentclass` solo debe llamarse una vez, al principio de tu documento de LaTeX.

### Diciéndole a LaTeX acerca de tu clase

Todos los archivos de clase deben empezar con dos líneas similares a las siguientes, que debes añadir en la parte superior de `my_cv.cls` ahora:

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[2011/03/26 My custom CV class]
```

El `\NeedsTeXFormat` los comandos le dicen al compilador qué versión de LaTeX usa el paquete. La versión actual de LaTeX es LaTeX2e y casi todas las distribuciones usan esta.

El `\ProvidesClass` el comando da al compilador cierta información sobre tu paquete. El primer argumento debe coincidir con el nombre del archivo de tu archivo de clase y le dice a LaTeX cómo se llama tu paquete. El segundo argumento es opcional y proporciona una descripción de tu clase que aparecerá en el registro y en otros lugares. La descripción debe comenzar con una fecha exactamente en el formato anterior y debe ser la fecha en que el paquete se modificó por última vez. Esto puede usarse al incluir la clase para comprobar que tienes una versión suficientemente reciente. Por ejemplo, si la incluyes mediante `\documentclass{my_cv}[2012/01/01]` con una fecha más reciente que la de la descripción de la clase, se mostrará una advertencia diciendo que la clase está desactualizada.

### Modificando los encabezados de sección

Los encabezados de sección estándar de article no se adaptan realmente a un CV, así que nos gustaría reemplazarlos por algo más elegante. Para hacerlo, podemos redefinir el `\section` comando para mostrar un encabezado personalizado.

Afortunadamente ya existe un excelente paquete llamado `titlesec` que proporciona una forma sencilla de personalizar los estilos de nuestros encabezados. Inclúyelo en tu archivo de clase con:

```latex
\RequirePackage{titlesec}
```

Observa que debemos usar `\RequirePackage` en lugar del habitual `\usepackage` comando porque estamos en un archivo de clase. El `\RequirePackage` comando se asegura de que cada paquete solo se cargue una vez, incluso si se llama varias veces desde distintos archivos de estilo y de clase.

El `titlesec` paquete proporciona el comando `\titleformat` que nos permite personalizar los encabezados de sección. Añade lo siguiente al final de `my_cv.cls` para personalizar el formato del encabezado:

```latex
\titleformat{\section}         % Personaliza el comando \section
  {\Large\scshape\raggedright} % Haz que los encabezados de \section sean grandes (\Large),
                               % versales pequeñas (\scshape) y alineados a la izquierda (\raggedright)
  {}{0em}                      % Puede usarse para dar un prefijo a todas las secciones, como 'Sección ...'
  {}                           % Puede usarse para insertar código antes del encabezado
  [\titlerule]                 % Inserta una línea horizontal después del encabezado
```

Si compilamos `cv.tex` ahora veremos que tenemos algunos encabezados principales más apropiados para un CV:

![Screenshot1.png](/files/bec3e83ae4898da0e9b9a6b8e03ca90c34ddc97b)

También podemos personalizar los encabezados de \subsection:

```latex
\titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}
```

Ahora las subsecciones tienen el mismo estilo:

![Screenshot2.png](/files/59875e888fec39e00c4b63e30c69594fa6bc8b81)

Deberías probar algunas de las opciones de formato disponibles para ver cuáles te gustan:

* `\bfseries`, `\itshape`: haz el encabezado negrita o cursiva;
* `\scshape`: versales pequeñas;
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: establece el tamaño de fuente;
* `\rmfamily`, `\sffamily`, `\ttfamily`: establece el tipo de letra respectivamente en con serifa, sin serifa o monoespaciada.

### Añadiendo fechas a los encabezados de sección

Podemos definir algunos comandos nuevos que nos permitan incluir fechas en nuestros encabezados de sección. Incluye lo siguiente en tu archivo de clase:

```latex
\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}
```

Esto define dos comandos nuevos `\datedsection` y `\datedsubsection` que toman dos argumentos: el nombre de la sección, como antes, y una fecha que se compondrá en el lado derecho de la página. El `\hfill` comando le dice a LaTeX que ocupe tanto espacio como sea posible y así empuja el segundo argumento (`#2`) hacia la derecha de la página. Modifica `cv.tex` para usar estos comandos:

```latex
\documentclass{my_cv}

\begin{document}

\section{Educación}
\datedsubsection{University of Nowhere}{2004--2008}
Asistí a la Universidad de Ningún Lugar de 2004 a 2008.

\section{Trabajo}
\datedsubsection{ABC Limited.}{2008--Ahora}
He trabajado en ABC Limited desde 2008.

\end{document} ​
```

Nuestro CV ahora contiene fechas:

![Screenshot3.png](/files/e34e3e550ffbbe6f8b58389fd4dc2c58d190d4f4)

### Conclusiones

Eso es todo por la primera parte de esta guía, pero espero haber cubierto lo suficiente para que puedas irte y empezar a crear archivos de clase útiles. No ha hecho falta usar muchos comandos para crear algo que ya parece una plantilla de CV razonable y apenas hemos arañado la superficie de todo lo demás que podríamos personalizar. En las próximas partes de esta guía hablaré sobre cómo pasar opciones a tu clase para configurarla, cómo crear un buen título y cómo establecer algunas opciones generales de diseño.

¡Gracias por leer!

Ten en cuenta que soy relativamente nuevo creando archivos de clase yo mismo, así que si alguien puede señalar mejores formas de hacer las cosas que he mencionado aquí, por favor hágamelo saber.

Parte 1 | [Parte 2](/latex/es/mas-temas/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/es/mas-temas/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
