alexishuf / ufsc-thesis-rn46-2019

Template for theses (from undergrad to PhD) according to UFSC regulations
33 stars 5 forks source link

Problemas com o logo #6

Closed xR2 closed 2 years ago

xR2 commented 2 years ago

Estou encontrando o seguinte erro ao tentar compilar o userguide.tex

Undefined control sequence. \IfFileExists{\ufscthesis@logofc}

Estou usando o github desktop (windows) e no TexStudio com TexLive 2021. Usei pdflatex -interaction=nonstopmode -shell-escape %.tex

alexishuf commented 2 years ago

Não consegui reproduzir o mesmo problema, mas encontrei outro problema afetando o windows.

Em resumo:

  1. Atualize o cls, remova todos os arquivos temporários, especialmente o userguide.64 e o userguide-logo.pdf e tente novamente.
  2. Se rodar pdflatex pelo terminal confirme que está chamando ele da mesma pasta onde está o userguide.tex

O que verifiquei durante a minha investigação em um windows server 2019 na AWS:

A versão do github em princípio não deveria ser um fator. Pela mensagem, você não teve o problema do link simbólico pro cls dentro de doc/ virar um arquivo de texto.

No linux as versões 2.6.1.40.22 e 2.6.1.40.23 funcionaram com ou sem userguide.64 e userguide-logo.pdf pré-existentes. No windows instalei a versão atual e na parte do texlive funcionou.

O comando \IfFileExists é um comando low-level TeX que deveria estar disponível até em instalações mínimas do texlive. Inclusive, \IfFileExists foi executado bem antes no cls (para detectar o windows) e se não estivesse definido deveria ter falhado antes. O ufscthesis@logofc também é definido em todos os caminhos de execução que levam a essa linha onde você teve o erro. Esse erro é impossível (no cls >= 0.8.9), então se o .cls e .tex estiverem iguais ao repositório, só tenho explicações esotéricas.

No windows eu tive um problema diferente, onde o pdflatex falhava com erros sobre o userguide-logo.pdf, gerado durante a compilação, não ser um PDF válido. Isso ocorria pois o certutil, usado no windows para fazer o trabalho de base64 --decode, estava sendo invocado incorretamente. A verão atual do cls (0.8.11) invoca o certutil com o devido carinho e consegui compilar o userguide.tex com e sem userguide.64 e userguide-logo.pdf pré-existentes.

É possível que esse problema do certutil no teu sistema tenha causado alguma cascata de outros erros ou tenha corrompido algum estado durante a execução que fe surgir esse erro "impossível". Por isso tenho esperança que resolva.

Caso a atualização não resolva o teu problema, responda essa issue com o userguide.log. Cheque também se o userguide.64 começa com JVBER e termina com FT0YK e se o userguide-logo.pdf é um PDF com o logo da UFSC ou se ele é um arquivo de texto com uma mensagem do certutil.

Se o problema realmente continuar sendo o \IfFileExists não definido, recomendo remover e reinstalar o texlive.

xR2 commented 2 years ago

Primeiramente, obrigado por responder, e rápido hehe.

Na verdade eu descobri que tive sim o problema do cls virar texto, mas como já tinha copiado e colado a classe da pasta raiz não tinha me dado conta. Dessa vez tive q fazer isso de novo.

Não há userguide-logo.pdf. Tentei criar ele copiando o arquivo de logo original e renomeando o arquivo, não surtiu efeito.

Não foi gerado nenhum arquivo userguide.64 ou qualquercoisa.64. Anexei o log: userguide.log

Por desencargo testei esse MWE, pois contém o mesmo comando de verificar se o arquivo existe, e funcionou normalmente.

EDIT

Estava rodando com a opção windows , se eu mantiver o default embeddedlogo Aí obetnho um erro com pacote pygmentize que suponho é usado apenas num exemplo e provavelmente não vai me fazer falta. Mas talvez denote de fato alguma falha na minha instalação do TexLive.

O arquivo userguide.64 gerado começa e termina como vc falou. O userguide-logo.pdf ficou como texto:

CertUtil: Unknown arg: --decode
 CertUtil -? -- Display a verb list (command list) CertUtil -dump -? --
Display help text for the "dump" verb CertUtil -v -? -- Display all help text
for all verbs

E anexo o log (usando embededlogo) userguide.log

alexishuf commented 2 years ago

Hum, por essa resposta vejo que você tem 3 problemas. Vamos por partes.

tl;dr:

Nova versão do .cls, v 0.8.12 Instruções pra instalar o pygmentize abaixo Parece que você não atualizou o .cls dentro da pasta doc/

Problema 1 - opção windows

Você não precisa da opção windows, pois o .cls automaticamente verifica o sistema operacional. Na verdade você não deveria usar a opção, pois o dia que for compilar no overleaf ou no linux, o build vai quebrar.

De qualquer forma, parece existir um bug em algum lugar onde caso ifplatform.sty não tenha sido carregado, um erro vai acontecer após carregar longtable.sty. Quando você usava a opção windows, ifplatform não erra carregado e o build quebrava. Por isso que tirando windows você consegui ir mais longe.

Esse tipo de bug infelizmente é comum e faz parte da missão do .cls esconder eles. Por isso a versão 0.8.12 agora inclui o \RequirePackage{} caso você faça questão de usar a opção windows ao invés da detecção automática.

Problema 2 - pygmentize/minted

O erro com pygmentize acontece pois embora o .cls (não o exija, a documentação o exije pois eu usei o minted pra fazer a formatação de código. Para resolver, siga esses passos:

  1. Baixe a versão mais recente do python. Use o instalador no final dessa página (link direto aqui)
  2. Durante a instalação, lembre de marcar a opção do instalador de alterar o PATH, além da opção de aumentar o limite de tamanho da variável PATH.
  3. Se o passo 2 deu certo, abrir um novo cmd e digitar "python" deveria te colocar no REPL do python 3.10.1. Com o windows sendo windows, talvez seja necessário fazer logoff e logon novamente (ou até mesmo reiniciair). Em algumas versões do windows, alterações no %PATH% só surtem efeito durante o login.
  4. Instale o pygments com um pip install pygments no terminal.
  5. Se o passo 4 deu certo, pygmentize -h vai mostrar uma mensagem de ajuda ao invés de erro.

Se você já tem python instalado, você pode tentar seguir esse guia mais detalhado (e complicado).

Problema 3 - userguide-logo.pdf com texto

Isso aconteceu, como a mensagem diz por que o certutils foi chamado errado. Isso foi resolvido na versão 0.8.11 do .cls.

Imagino que você atualizou o .cls na raiz e esqueceu de atualizar o .cls que precisa ser copiado para a pasta doc/ pois o windows não tem o conceito de symlinks.

Problema 4 - você parece querer um template

Para não forçar minha opinião em outras pessoas, o ufsc-thesis-rn46-2019 tenta implementar apenas as regras da BU e esconder algumas gambiarras que todo mundo tinha que fazer com os templates antigos.

Se você não está portando um dos templates antigos ou algum código .tex teu para as novas regras da BU, talvez você queira um template como o lapesd-thesis. Ele é mais didático e tem muito mais features, mas está altamente contaminado com as minhas preferências.

xR2 commented 2 years ago

Segui as instruções e deu tudo certo :+1: Muito obrigado. Estou adaptando as minhas próprias gambiarras antigas e aprendendo mais sobre o memoir.