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".