Skip to content

Elementos em Latex

Eduardo de Santana Medeiros Alexandre edited this page Apr 21, 2017 · 26 revisions

O propósito desta página é reunir informações sobre como implementar elementos em Latex úteis em TCCs.

Algoritmos

Nesta seção apresenta-se como criar algoritmos no Limarka, utilizando códigos Latex:

Neste exemplo, utilizaremos a biblioteca algorithm2e, porém existem diversas outras como algorithm (Básica), algorithms, algorithmicx e algpseudocode. Cada uma possui suas peculiaridades de configurações e estilização.

A documentação da biblioteca trás todos os comandos e exemplos de utilização, é recomendável a sua leitura.

O primeiro passo é editar o aquivo latexcustomizacao.sty e adicionar a importação e o código para geração da lista (opcional):

\usepackage[ruled,vlined]{algorithm2e}
\renewcommand{\algorithmautorefname}{Algoritmo}% para utilizar \autoref

% Adicione o trecho a seguir somente se desejar incluir uma Lista de algoritmos (opcional)
\renewcommand{\listalgorithmcfname}{Lista de algoritmos}%
\renewcommand{\listasdousuario}{
  \pdfbookmark[0]{\listalgorithmcfname}{loa}
  \listofalgorithms
  \cleardoublepage
}

As instruções dentro do [ ] (ruled,vlined) são os parâmetros de estilização da biblioteca, neste caso, estamos adicionando as linhas de intervalo das instruções e o cabeçalho. Porém poderíamos adicionar linesnumbered para numerar as linhas, boxed para fechar o algoritmo em um caixa e etc.

Para utilizar no texto, basta invocar um \begin{algorithm}[H] (o parâmetro H força o algoritmo a aparecer onde é invocado no texto):

\begin{algorithm}[H]
\caption{Como escrever algoritmos  em \LaTeX2e\label{meualgoritmo}}
	\KwData{\Delta i, S}
	\KwResult{N}
		\While{\Delta i > N}{
			imprima()\;
			$\Delta i \leftarrow N^2$ \;
			\eIf{$V_f$ \neq $S_i$}{
				atualizaOsValores\;
				$N \leftarrow V_f$ + 2\;
			}{
				$N \leftarrow S_i$ - 7\;
			}
			
			$N \leftarrow N + 1$ \;
		}
\end{algorithm}

Referenciando-o no texto \autoref{meualgoritmo}.

Resultado:

A Lista de algoritmos é gerado com os conteúdos de \caption{}:

Comandos para escrita dos algoritmos

Os comandos que podem ser utilizados estão na documentação, mas segue abaixo um pequeno resumo de alguns dos mais úteis:

Ponto e Vírgula:

  • \;

Ifs:

  • \If{condição}{then block}
  • \Else{else block}
  • \ElseIf{elseif block}
  • \eIf{condition}{then block}{else block}

Switchs:

  • \Switch{condition}{Switch block}
  • \Case{a case}{case block}
  • \Other{otherwise block}

Loops:

  • \For{condition}{text loop}
  • \While{condition}{text loop}
  • \ForEach{condition}{text loop}
  • \Repeat{end condition}{text loop}

Input e Output:

  • \KwIn{input}
  • \KwOut{output}

Comentários:

  • \tcc{line(s) of comment}: Comentários de Trecho (/* */)
  • \tcp{line(s) of comment}: Comentários de Linha (// )

Observações:

  • Para mais detalhes de personalização, consultar a documentação.

  • Os comandos de atribuição e invocação de funções podem ser escritos naturalmente no bloco do algoritmo, desde que circundados por $ ($ N = 2 $) e SEMPRE termine com o ; (caso não adicionar o ponto e virgula, as instruções serão geradas na mesma linha da instrução anterior), utilizando as marcações LaTeX padrão, como \leftarrow, \neq, \bf, etc.

Hifenização

Para evitar Hifenização nas palavras adicione o seguinte código no latexcustomizacao.sty e inclua suas palavras na lista. Consulte ajuda se necessário.

% Hifenizacao - Colocar lista de palavras que não devem ser separadas e que não estão no dicionario português.
\hyphenation{ Markdown Asciidoc }

Subfiguras

Possibilita incluir várias figuras ao lado da outra.

Adicionar em latexcustomizacao.sty:

\usepackage{subfig}

Para incluir figuras:

\begin{figure}[htbp]
  \caption{Equivalência entre Latex e uma linguagem de marcação leve.\label{fig:latex-vs-markdown}}
  \centering
  \subfloat[Fonte de texto escrito em Latex, repleto de códigos e com baixa legibilidade.]{\label{lista:latex}{\includegraphics[width=12cm]{imagens/lista-latex.png} }}%
  \newline
  \subfloat[Fonte de texto escrito em uma linguagem de marcação, mais limpo e com maior legibilidade.]{\label{lista:markdown}{\includegraphics[width=13cm]{imagens/lista-markdown.png} }}%
  \legend{Fonte: Autor.}
\end{figure}

Apresentação das figuras:

Outro exemplo:

\begin{figure}[htbp]
  \caption{Soluções onerosas de formatações extraídos de TCCs reais durante o processo de Orientação\label{fig:problemas:formatacao}}
  \centering
  \subfloat[Tentativa de implementar espaçamento de títulos]{{\includegraphics[width=8cm]{imagens/problema-sem-numeracao-sem-estilo.png} }}%
  \quad
  \subfloat[Tentativa de realizar quebra de página]{{\includegraphics[width=7cm]{imagens/problema-referencias-quebra-de-pagina-com-enters.png} }}%
  \quad
  \subfloat[Sumário elaborado manualmente]{{\includegraphics[width=8cm]{imagens/problema-sumario-nao-automatizado.png} }}%
  \legend{Fonte: Autor.}
\end{figure}

Ajuda

Autoref em maiúsculo

Ao utilizar \autoref{label} um texto é gerado conforme o tipo do label: Capítulo, Apêndice, seção, etc. Por padrão o texto de seção é gerado em minúsculo e de capítulo é gerado em maiúsculo. Você pode alterar o texto que será gerado da seguinte forma:

% Especifica o texto que será utilizado pelo \autoref
\addto\extrasbrazil{%
\def\chaptername{Capítulo}
\def\sectionautorefname{Seção}%
\def\subsectionautorefname{Subseção}%
\def\subsubsectionname{Subseção}
}
Clone this wiki locally