Mostrando postagens com marcador latex. Mostrar todas as postagens
Mostrando postagens com marcador latex. Mostrar todas as postagens

2020/05/02

LaTeX: número de pastas vs tempo de compilação

Observando a alguns dias que o tempo de compilação de arquivos .tex estavam demorando muito para gerar o resultado em .pdf através do comando
pdfLaTex.exe <arquivo>
Levou-me a uma investigação a respeito. Dentre outras ações tomadas, a que mais teve impacto no tempo de execução foi a junção de vários arquivos de imagens, separadas por capítulo e subcapítulo, em uma única divisão por capítulo apenas.

Antes
\fig\capitulo01\
\fig\capitulo02\
\fig\capitulo03\experimento01\
\fig\capitulo03\experimento02\
\fig\capitulo04\
\fig\capitulo04\caso01\
\fig\capitulo04\extra\


Depois
\fig\capitulo01\
\fig\capitulo02\
\fig\capitulo03\
\fig\capitulo04\

Ao fazer o ajuste citado, foi possível observar uma melhora sensível no tempo de compilação, que reduziu cerca de 75% do tempo original.
Em arquivos com um número menor de imagens, é suficiente manter todos na pasta 
\fig\

Como testar os tempos de compilação?

Uma das formas utilizado foi colocar os dois conjuntos de arquivos a serem compilados em pastas diferentes e utilizar um arquivo em lote tipo bath.

REM Este arquivo bath compila o LaTeX dentro da pasta especificada
cd <pasta_tipo01>
pdflatex.exe -synctex=1 --enable-write18 -interaction=nonstopmode <nome_do_arquivo>.tex
cd ..

O outro arquivo bath só altera a linha
cd <pasta_tipo02>

Pronto, agora no Python, basta fazer um looping para examinar o tempo de compilação de cada um dos tipo e tirar a média.
Pode ocorrer da primeira compilação apresentar um tempo elevado, devido a geração dos indices e outros arquivos auxiliares, bem como devido a outro processo em paralelo na máquina, no entanto, na média geral é possível saber o ganho desta simplificação das pastas.

import os
import time
import numpy as np
arrTempos = []
for i in range(10):   #optou-se por 10 ciclos para tirar a média
    # (1) CMD /K – execute a command and then remain:
    # (2) CMD /C – execute a command and then terminate:
    t = time.time()
    os.system('cmd /c <bath_01>.bat') #com as pastas juntas
    elapsed01 = time.time() - t
    os.system('cmd /c <bath_02>.bat') #com as pastas separadas
    elapsed02 = time.time() - t
    arrTempos.append([elapsed01,elapsed02])
print(np.mean(arrTempos, axis=0))
Nos meus teste, em um arquivo LaTeX de alguns capítulos e saída PDF de cerca de 5MB em ~150 páginas, a média dos tempos para 10 rodadas foram
[ 88.78563097 244.51468055]
Em outra palavras, o tempo de compilação para pastas_juntas foram cerca de 1/3 em relação ao outro método.
Os tempos parciais para pastas_juntas e pastas_separadas foram
[78.91398334503174, 228.06645393371582]
[83.48539805412292, 255.4984953403473]
[94.20977091789246, 269.09853291511536]
[93.2732846736908, 263.52228140830994]
[80.58168148994446, 214.4084243774414]
[95.5419991016388, 264.4155135154724]
[83.58538913726807, 242.64917302131653]
[103.91669821739197, 273.17346358299255]
[99.13573002815247, 228.97257685661316]
[75.21237468719482, 205.3418905735016]



2017/09/13

LaTeX e algumas dicas de Uso

Segue algumas dicas rápidas de uso que aprendi ultimamente usando o LaTeX.

Bibliografia Incorporada ao Documento : Facilitador

Uma das formas usuais de usar referências bibliográficas, é utilizar um arquivo a parte .bib contendo as referências. Serão listadas no documento somente as utilizadas. Caso queira colocar tudo em um único arquivo (versão final), basta compilar e procurar a o arquivo .bbl.
No arquivo .bbl bastas fazer uma limpeza dentro do trecho compreendido entre "\begin{thebibliography}{10}" até "\end{thebibliography}".  Mantenha os itens  começados com "\bibitem{" e incorpore no artigo final .tex. Assim o arquivo final .tex terá um arquivo externo a menos. Pode ser vantajoso para fins de arquivamento. 

Gerando Arquivos PDF com Saídas que permitem a cópia correta do Caractere Acentuado

Não são poucas as vezes que ao deparar com um artigo em PDF em texto latino (inclusive na língua portuguesa), ao copiar um parte do texto para referenciar ou mesmo usar como base de citação. o texto apresenta erros de acentuação. Dependendo do tamanho do texto, gera um grande trabalho para arrumar manualmente.
Para gerar arquivos PDF na língua portuguesa, sem este problema, usar a
linha \usepackage[T1]{fontenc}
Como no exemplo abaixo para a lingua "swedish" que também sofre o mesmo problema.

\documentclass[12pt, a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[swedish]{babel}
\usepackage{fullpage}
\begin{document}
åäö
\end{document}
Esta observação veio de uma do uso do modelo ABNT para Dissertações e Teses. Notei que o resultado gerado  em PDF era possível copiar corretamente. O que não ocorria com artigos do IEEE. Sendo assim, o código acima foi uma dica de https://tex.stackexchange.com/questions/144858/weird-text-when-copying-from-pdf como uma solução para este caso.

Outras dicas

Neste documento em outro momento. Expandindo o texto gradualmente.

2017/09/11

TeXStudio com Visual Diferente

Ao abrir um arquivo exemplo, notei algo estranho na apresentação do texto das palavras chaves do código LaTeX dentro do Editor TeXStudio. Veja a imagem.
Letras com formato diferente do usual.


A versão atual é a seguinte 2.12.6

Versão atual do TeXStudio

Que esta atualizada, conforme indicado na imagem abaixo.

Versão atualizada.

Até o momento não tenho a explicação. Se souber de algo a respeito ou tenha outra possível indicação do motivo desta alteração, deixe seu comentário.

Assim que tiver mais algumas informação, atualizarei este post.

Solução Encontrada

Simplesmente solicitei para apagar todas as configurações atuais e retornar para as definições originais de instalação. Ao menos voltou ao normal.
"Options > Restore Default Settings".




2017/03/03

Warning no "abnt-etal-cite"

Quando compilado o LaTeX, usando o estilo ABNT, aparece um alerta que é ignorado por muitos:
I didn't find a database entry for "abnt-etal-cite"
(veja imagem abaixo)

Exemplo de alerta ao compilar o modelo ABNT no LaTeX

Como resolver:

Dentro da chamada do pacote
\usepackage{abntex2cite}

Existe algumas configurações padrões para seguir as regras das ABNT. Verifique existe um dos itens
"abnt-etal-list" que no meu não tinha associado a número algum. Após observar a configuração deste item em outros fóruns, teste alterado para
"abnt-etal-cite=3" e o alerta foi eliminado.

Veja como ficou a minha configuração completa deste pacote.
\usepackage[alf,abnt-emphasize=bf, abnt-thesis-year=both, abnt-repeated-author-omit=yes, abnt-last-names=abnt, abnt-etal-cite=3,abnt-etal-list=3, abnt-etal-text=default, abnt-and-type=e, abnt-doi=doi, abnt-url-package=none, abnt-verbatim-entry=no]{abntex2cite}


2016/03/18

Fazendo um Glossário no LaTeX

Ao usar o TeXstudio, este não vem com o compilador necessário para fazer os glossários.
É necessário o Perl ou aparecerá o seguinte erro



Process started: makeglossaries.exe "xxxxxxxx"
makeglossaries.exe
: The Perl interpreter could not be found.
Process exited with error(s)


A solução é baixar o compilador Pearl em
https://www.perl.org/get.html

Depois de instalado, basta seguir algumas dicas simples de uso como apresentado em 


Código a ser compilado
-------------------------------------------------------------
\documentclass{article}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}
\usepackage[acronym, toc]{glossaries}

\makeglossaries
\input{biblioteca/glossary.tex}
\begin{document}
\tableofcontents
\section{Primeira Seção}
The \Gls{latex} typesetting markup language is specially suitable for documents that include \gls{maths}. \Glspl{formula} are rendered properly an easily once one gets used to the commands.

\clearpage
\section{Segunda Seção}
\vspace{5mm}
Given a set of numbers, there are elementary methods to compute its \acrlong{gcd}, which is abbreviated \acrshort{gcd}. This process is similar to that used for the \acrfull{lcm}.

\printglossary
\printglossary[type=\acronymtype]

\end{document}
-------------------------------------------------------------
O arquivo da biblioteca/glossary.tex
-------------------------------------------------------------
\newglossaryentry{latex}
{
    name=latex,
    description={Is a mark up language specially suited for scientific documents}
}

\newglossaryentry{maths}
{
    name=mathematics,
    description={Mathematics is what mathematicians do}
}

\newglossaryentry{formula}
{
    name=formula,
    description={A mathematical expression}
}

\newacronym{gcd}{GCD}{Greatest Common Divisor}

\newacronym{lcm}{LCM}{Least Common Multiple}

-------------------------------------------------------------
[tex] [pdf] [zip]


Resultado


2016/02/26

Copiando Códigos de Arquivos PDF feitos com LaTeX

Um dos métodos usados para apresentar códigos em textos produzidos em LaTeX é o pacote \usepackage{listings}
Com alguns parâmetros é possível colocar em um quadro numerando as linhas.
O problema esta no arquivo PDF gerado. Ao copiar o código, os números das linhas vem junto ao código.


Copiando do PDF aparece

E colando em um texto para edição (aproveitamento) aparece:

\documentclass{article}
2 \usepackage{listings}
3 \title{Sample Document}
4 \author{John Smith}
5 \date{\today}
6 \begin{document}
7 \maketitle
8 Hello World!
9 % This is a comment.
10 \end{document}


Como evitar este problema?
Afinal, o leitor tem interesse no código e não na numeração lateral.
Dependendo do tamanho do código, o leitor terá um grande trabalho e limpar a numeração em cada linha copiada.

Ao fazer uma busca na internet, achei a solução em http://tex.stackexchange.com/questions/57141
Basta inserir o pacote e o código abaixo no preâmbulo do documento

\usepackage{accsupp}% http://ctan.org/pkg/accsupp
\renewcommand{\thelstnumber}{% Line number printing mechanism
\protect\BeginAccSupp{ActualText={}}\arabic{lstnumber}\protect\EndAccSupp{}%
}

Resultado após copiar do PDF é o código limpo abaixo

\documentclass{article}
\usepackage{listings}
\title{Sample Document}
\author{John Smith}
\date{\today}
\begin{document}
\maketitle
Hello World!
% This is a comment.
\end{document}

Código fonte do LaTeX acima [link]
PDF resultante [link]