Featured image of post Criando um Currículo Sustentável com Markdown e Pandoc

Criando um Currículo Sustentável com Markdown e Pandoc

Aprenda como criar e manter seu currículo em múltiplos formatos usando Markdown e Pandoc

Introdução Link to this section

Manter um currículo profissional atualizado e adaptável para várias aplicações pode ser desafiador. Este artigo demonstra como usar o Markdown para o conteúdo e o Pandoc para a conversão simplifica o processo, permitindo que você mantenha um único arquivo fonte limpo que se transforma sem esforço em saídas PDF, DOCX ou HTML refinadas.

Por que Markdown e Pandoc? Link to this section

Quando se trata de gerenciamento de currículos, usar Markdown e Pandoc oferece várias vantagens:

  • Controle de Versão: Seu currículo se torna facilmente rastreável no Git e você pode usar tags ou branches para preservar as versões que foram enviadas para uma vaga de emprego;
  • Sintaxe Simples: A sintaxe Markdown é simples e legível, tornando a edição e manutenção do seu currículo direta;
  • Múltiplos Formatos: Atualize seu currículo em um arquivo Markdown central e gere múltiplos formatos (PDF, DOCX, HTML, etc.). A fonte pode até ser renderizada diretamente em plataformas como o GitHub;
  • Separação de Preocupações: Mantenha o conteúdo do seu currículo limpo em Markdown enquanto gerencia a formatação externamente por meio de templates. Isso garante um estilo consistente em todos os formatos gerados, ao contrário de documentos formatados manualmente, onde os estilos podem divergir com o tempo;
  • Suporte a Múltiplos Idiomas: Facilite currículos em vários idiomas, gerenciando diferentes versões de idioma do seu conteúdo mais facilmente;
  • Automação com Filtros: Estenda a funcionalidade com filtros Pandoc (escritos em Lua ou Python) para automatizar tarefas como citações, formatação personalizada ou inclusão de conteúdo condicional.

Configurando o Ambiente Link to this section

Para começar, você precisará do Pandoc e de um mecanismo de renderização de PDF como LaTeX, wkhtmltopdf ou WeasyPrint. Observe que cada mecanismo tem dependências específicas; por exemplo, usar LaTeX exige a instalação de vários pacotes (por exemplo, amsfonts, amsmath, graphicx, hyperref, babel, etc.).

Para evitar sobrecarregar seu sistema com inúmeras dependências, considere executar o Pandoc dentro de um contêiner Docker. Essa abordagem isola o ambiente, permitindo fácil acesso a templates, fontes e ativos locais por meio de volumes Docker.

Dito isto, neste artigo, não abordarei a instalação do Pandoc e me concentrarei em usá-lo em um contêiner.

O Pandoc possui várias variações de imagem de contêiner (aqui está a lista oficial), mas eu uso pandoc/extra, que vem com LaTeX e dependências instaladas.

Puxe a imagem:

docker pull pandoc/extra

E toda vez que você executar o Pandoc, use um docker run --rm para iniciar um contêiner e removê-lo posteriormente:

docker run --rm -v "$(pwd):/data" -u $(id -u):$(id -g) pandoc/extra {pandoc-params}

Exemplo:

docker run --rm -v "$(pwd):/data" -u $(id -u):$(id -g) pandoc/extra Resume.md -o Resume.pdf

ℹ️ Para fins de simplicidade, pelo resto do artigo, usarei apenas o comando pandoc {params}.

Criando Seu Currículo em Markdown Link to this section

Comece criando um arquivo resume.md. Aqui está uma estrutura fundamental para você começar:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# John Doe
## Engenheiro de Software

> [john@doe.com](mailto:john@doe.com) |
> [LinkedIn](https://linkedin.com/in/johndoe) |
> [GitHub](https://github.com/johndoe)

## Resumo

Engenheiro de software experiente com mais de 8 anos de experiência em desenvolvimento full-stack...

## Experiência

### Engenheiro de Software Sênior | Tech Corp
*2020 - Presente*

- Liderou o desenvolvimento da arquitetura de microsserviços atendendo a mais de 1 milhão de usuários
- Orientou desenvolvedores juniores e conduziu revisões de código
- Implementou pipelines de CI/CD reduzindo o tempo de implantação em 40%

### Engenheiro de Software | Start Up Inc
*2017 - 2020*

- Desenvolveu e manteve aplicações web voltadas para o cliente
- Melhorou o desempenho da aplicação em 60%

## Habilidades

- **Linguagens**: Python, JavaScript, C#, SQL
- **Frameworks**: Django, React, .NET Core
- **Ferramentas**: Docker, Kubernetes, AWS

Gerando Seu Currículo Link to this section

Use os seguintes comandos Pandoc para converter seu currículo Markdown em vários formatos:

Para PDF Link to this section

pandoc resume.md -o resume.pdf

Para DOCX Link to this section

pandoc resume.md -o resume.docx

Para HTML Link to this section

pandoc resume.md -o resume.html -s

Templates Link to this section

Os templates Pandoc oferecem diversos estilos e funcionalidades. Selecione um que corresponda à sua estética desejada e necessidades de personalização. As escolhas populares incluem Eisvogel para LaTeX/PDF e várias opções para HTML/CSS.

Se você pretende gerar em mais de um formato, você precisa escolher um template que suporte todos eles ou usar um template para cada formato.

Usando um template embutido ou instalado (por exemplo, Eisvogel para PDF) Link to this section

Para usar um template embutido, passe seu nome no parâmetro template:

pandoc resume.md -o resume.pdf --template eisvogel

Usando um arquivo de template personalizado dentro de um contêiner Link to this section

Para usar um template personalizado dentro de um contêiner, crie um volume mapeando uma pasta com o contêiner e passe o caminho relativo no parâmetro template:

docker run --rm \
  --volume "$(pwd):/data" \
  --volume "$(pwd)/custom-templates:/templates" \
  --user "$(id -u):$(id -g)" \
  pandoc/extra \
  resume.md \
  -o resume.pdf \
  --template /templates/my-custom-template.latex

Parâmetros Frontmatter Link to this section

O Pandoc utiliza variáveis definidas em um bloco de metadados YAML (frontmatter) no início do seu arquivo Markdown. Os templates geralmente definem variáveis personalizadas para controlar o layout, estilo ou adicionar informações de cabeçalho/rodapé – consulte a documentação específica do template para obter detalhes.

Aqui está um exemplo de variáveis usadas pelo Pandoc:

1
2
3
4
5
6
7
8
9
---
title: "O Título do Documento"
author: [Exemplo de Autor, Outro Autor]
date: "2017-02-20"
keywords: [Markdown, Exemplo]
---
...

Aqui está o texto real do documento...

Estilo Personalizado (com LaTeX) Link to this section

Para controle refinado da saída PDF via LaTeX, você pode incluir trechos de código LaTeX personalizados. Crie um arquivo (por exemplo, styling.tex) com suas personalizações:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
% Adjust line spacing
\usepackage{setspace}
\setstretch{1.1}

% Customize hyperlink color
\usepackage{xcolor}
\usepackage{hyperref}
\hypersetup{
    colorlinks=true,
    linkcolor=blue,
    urlcolor=blue
}

Em seguida, inclua este arquivo durante a conversão usando a flag --include-in-header:

pandoc resume.md -o resume.pdf --template eisvogel --include-in-header=styling.tex

Da mesma forma, para saída HTML, você pode fornecer um arquivo CSS personalizado usando a flag --css.

Dicas e Melhores Práticas Link to this section

  1. Mantenha Simples: Markdown deve ser legível. Concentre-se na estrutura do conteúdo;
  2. Controle de Versão: Use o Git para rastrear alterações, experimentar com branches e marcar versões enviadas aos empregadores;
  3. Separe Conteúdo e Estilo: Gerencie o estilo externamente usando includes/templates LaTeX para PDF ou CSS para HTML para manter seu Markdown focado no conteúdo;
  4. Verifique a Saída: Sempre verifique como seu currículo aparece em cada formato (PDF, DOCX, HTML) para garantir a correção e a aparência desejada;
  5. Use Templates e Variáveis: Aproveite diferentes templates e use variáveis de metadados e filtros Pandoc para gerar facilmente versões de currículo personalizadas para aplicações de emprego específicas sem duplicar o conteúdo principal.

Explorando Mais Templates Link to this section

Além do popular template Eisvogel, muitas outras opções existem no GitHub, oferecendo diferentes estilos e recursos. Alguns usam YAML em vez de Markdown para o conteúdo.

Aqui estão alguns exemplos:

Ao escolher um template, considere seus formatos de saída, opções de personalização, dependências e documentação.

Referências Link to this section

💬 Like or have something to add? Leave a comment below.
Ko-fi
GitHub Sponsor
Licensed under CC BY-NC-SA 4.0
Criado com Hugo
Tema Stack desenvolvido por Jimmy