> 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/overleaf-learn-latex-pt/mais-topicos/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# Como escrever um ficheiro de classe LaTeX e desenhar o seu próprio CV (Parte 1)

Parte 1 | [Parte 2](/latex/overleaf-learn-latex-pt/mais-topicos/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**Autor: James Allen (Março de 2011)**

Toda a gente quer um CV com aspeto profissional e não faltam modelos LaTeX que lhe dão isso. Mas, se for como eu, vai querer ter o seu próprio CV e torná-lo verdadeiramente seu. Isso significa que precisa de conseguir personalizar o aspeto e o estilo por si mesmo, o que pode ser notoriamente difícil em LaTeX. Nesta série de publicações do blogue, espero guiá-lo na criação do seu próprio ficheiro de classe personalizado e mostrar-lhe que pode ser fácil formatar o seu CV exatamente como quer. Vamos concentrar-nos num estilo de CV, mas os métodos serão idênticos para qualquer tipo de documento.

### O que é um ficheiro de classe?

Quando escreve `\documentclass{article}` no seu ficheiro LaTeX, está a incluir o ficheiro de classe `article.cls`. Isto define todos os comandos, como `\section` e `\title` que servem para estruturar o seu documento. Também configura a forma como estes comandos afetam o formato e a disposição da página.

### Configurar o seu próprio ficheiro de classe

A forma mais elegante de personalizar o formato de um documento é manter toda essa informação num ficheiro de classe pessoal. Isto mantém a estrutura do seu documento claramente separada da formatação e permite uma reutilização fácil. É fácil configurar isto, por isso crie um documento chamado cv.tex com o seguinte conteúdo:

```latex
\documentclass{my_cv}
\begin{document}
\section{Educação}
\subsection{University of Nowhere}
\section{Trabalho}
\subsection{ABC Limited.}
\end{document}
```

Isto está a tentar carregar o seu ficheiro de classe personalizado `my_cv.cls`, que ainda não existe. Crie `my_cv.cls` na mesma pasta que `cv.tex` e escreva nele a seguinte linha:

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

Se compilar o seu documento agora, deverá ver os cabeçalhos no estilo predefinido article.

Então, o que aconteceu aqui? Os ficheiros de classe precisam de conter muita informação de formatação e configuração interna para fazer o LaTeX funcionar corretamente, mas não queremos ter de a introduzir toda manualmente. Em vez disso, podemos basear o nosso novo ficheiro de classe em `article.cls`. Usamos `\LoadClass` de incluir `article.cls` e carregar todos os comandos e estilos definidos nele. Note que não usamos o habitual `\documentclass` comando para incluir `article.cls` porque `\documentclass` deve ser chamado apenas uma vez, no início do seu documento LaTeX.

### Dizer ao LaTeX qual é a sua classe

Todos os ficheiros de classe devem começar com duas linhas semelhantes às seguintes, que deve adicionar no topo de `my_cv.cls` agora:

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[2011/03/26 A minha classe de CV personalizada]
```

O `\NeedsTeXFormat` comandos dizem ao compilador para que versão do LaTeX o pacote se destina. A versão atual do LaTeX é LaTeX2e e quase todas as distribuições usam esta.

O `\ProvidesClass` comando dá ao compilador alguma informação sobre o seu pacote. O primeiro argumento deve corresponder ao nome do ficheiro da sua classe e diz ao LaTeX como o seu pacote se chama. O segundo argumento é opcional e fornece uma descrição da sua classe que aparecerá no registo e noutros locais. A descrição deve começar com uma data exatamente no formato acima e deve ser a data em que o pacote foi modificado pela última vez. Isto pode ser usado, ao incluir a classe, para verificar se tem uma versão suficientemente recente. Por exemplo, se a incluir através de `\documentclass{my_cv}[2012/01/01]` com uma data mais recente do que a data na descrição da classe, será apresentada uma advertência a dizer que a classe está desatualizada.

### Modificar os cabeçalhos de secção

Os cabeçalhos de secção do artigo padrão não se adequam muito a um CV, por isso gostaríamos de substituí-los por algo mais elegante. Para fazer isso, podemos redefinir o `\section` comando para produzir um cabeçalho personalizado.

Felizmente, já existe um excelente pacote chamado `titlesec` que fornece uma forma simples de personalizar os estilos dos nossos cabeçalhos. Inclua-o no seu ficheiro de classe com:

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

Repare que devemos usar `\RequirePackage` em vez do habitual `\usepackage` comando, porque estamos num ficheiro de classe. O `\RequirePackage` comando garante que cada pacote é carregado apenas uma vez, mesmo que seja chamado várias vezes a partir de diferentes ficheiros de estilo e de classe.

O `titlesec` pacote fornece o comando `\titleformat` que nos permite personalizar os cabeçalhos das secções. Adicione o seguinte ao final de `my_cv.cls` para personalizar o formato do cabeçalho:

```latex
\titleformat{\section}         % Personalizar o comando \section
  {\Large\scshape\raggedright} % Tornar os cabeçalhos \section grandes (\Large),
                               % em maiúsculas pequenas (\scshape) e alinhados à esquerda (\raggedright)
  {}{0em}                      % Pode ser usado para dar um prefixo a todas as secções, como 'Secção ...'
  {}                           % Pode ser usado para inserir código antes do cabeçalho
  [\titlerule]                 % Insere uma linha horizontal após o cabeçalho
```

Se compilarmos `cv.tex` agora, veremos que temos alguns cabeçalhos principais mais adequados a um CV:

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

Também podemos personalizar os cabeçalhos de \subsection:

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

As subsecções estão agora no mesmo estilo:

![Screenshot2.png](/files/51a6e44fb8d6b2dc09d228999521ad00ec8cbcf2)

Deve experimentar algumas das opções de formatação disponíveis para ver o que prefere:

* `\bfseries`, `\itshape`: tornar o cabeçalho a negrito ou itálico;
* `\scshape`: maiúsculas pequenas;
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: definir o tamanho da fonte;
* `\rmfamily`, `\sffamily`, `\ttfamily`: definir o tipo de letra, respetivamente, com serifa, sem serifa ou monoespaçado.

### Adicionar datas aos cabeçalhos de secção

Podemos definir alguns novos comandos que nos permitem incluir datas nos cabeçalhos das secções. Inclua o seguinte no seu ficheiro de classe:

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

Isto define dois novos comandos `\datedsection` e `\datedsubsection` que recebem dois argumentos: o nome da secção, como antes, e uma data que será composta no lado direito da página. O `\hfill` comando diz ao LaTeX para preencher o máximo de espaço possível e, assim, empurra o segundo argumento (`#2`) para a direita da página. Modifique `cv.tex` para usar estes comandos:

```latex
\documentclass{my_cv}

\begin{document}

\section{Educação}
\datedsubsection{University of Nowhere}{2004--2008}
Frequentei a University of Nowhere de 2004 a 2008.

\section{Trabalho}
\datedsubsection{ABC Limited.}{2008--Now}
Trabalho na ABC Limited desde 2008.

\end{document} ​
```

O nosso CV agora contém datas:

![Screenshot3.png](/files/57e7df7e123c67374f67c58e4461547da5fff83b)

### Conclusões

É tudo para a primeira parte deste guia, mas espero ter coberto o suficiente para que possa seguir em frente e começar a criar ficheiros de classe úteis. Não foram precisos muitos comandos para criar algo que já se parece com um modelo de CV razoável e apenas arranhámos a superfície do que mais poderíamos personalizar. Nas próximas partes deste guia, falarei sobre passar opções à sua classe para a configurar, criar um bom título e como definir algumas opções gerais de layout.

Obrigado por ler!

Note que sou relativamente novo na criação de ficheiros de classe, por isso, se alguém puder indicar formas melhores de fazer as coisas que mencionei aqui, por favor diga-me.

Parte 1 | [Parte 2](/latex/overleaf-learn-latex-pt/mais-topicos/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/overleaf-learn-latex-pt/mais-topicos/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.
