Como traduzir um documento LaTeX sem quebrar fórmulas, citações ou rótulos
O que traduzir em um arquivo .tex, o que deixar intacto e por que um arquivo traduzido pode compilar sem erros e ainda assim perder o texto. Com um arquivo de exemplo, dois verificadores gratuitos e um teste local com LLM em 9 execuções.

Para traduzir um documento LaTeX, traduza a prosa e os argumentos voltados ao leitor dos comandos, como títulos de seção, legendas, notas de rodapé e texto de links. Deixe os comandos, nomes de ambientes, chaves de \label, \ref e \cite, fórmulas e blocos verbatim exatamente como estão. Em seguida, faça uma alteração que nenhum tradutor deve fazer por você: configure o preâmbulo para o idioma de destino, pois um arquivo que mantém o preâmbulo em inglês pode compilar sem erro e ainda assim gerar um PDF sem o texto traduzido.
Esse último ponto é o resultado principal de um pequeno teste. Traduzimos um artigo LaTeX de 98 linhas para chinês simplificado nove vezes com um modelo local, de três maneiras diferentes, e verificamos cada resultado com um script e um compilador. As partes que costumam preocupar as pessoas resistiram em todas as nove execuções: rótulos, referências, citações, equações, URLs, colunas de tabela e chaves voltaram intactos, e todas as referências cruzadas foram resolvidas. Os problemas estavam em outro lugar. As seis execuções cujo prompt dizia "não altere o preâmbulo" obedeceram, compilaram com código de saída 0 e produziram PDFs sem nenhum texto em chinês. Uma execução aplicou nossa regra "escape o sinal de %" dentro de uma listagem de código, então o PDF imprime uma barra invertida perdida. E pelo menos três execuções alteraram o significado de uma frase de maneiras que nenhuma verificação estrutural consegue detectar.
Resposta rápida: o que traduzir e o que deixar intacto
| Parte do arquivo | Exemplo do nosso arquivo de amostra | Traduzir? |
|---|---|---|
Preâmbulo: \documentclass, \usepackage, \newcommand | \newcommand{\wpm}{\mathrm{wpm}} | Não, mas adicione você mesmo a configuração do idioma de destino (veja abaixo) |
\title, \author, \date | \title{Estimating Reading Time for Translated Ebooks} | Título e data sim; nomes geralmente não |
| Cabeçalhos | \section{Method}\label{sec:method} | Sim, o texto entre chaves; mantenha o rótulo |
| Rótulos e referências | \label{eq:time}, Section~\ref{sec:method}, \eqref{eq:time} | Mantenha todas as chaves |
| Citações e chaves de bibliografia | \cite{brysbaert2019}, \bibitem{rayner2016} | Mantenha as chaves; traduza o texto da entrada apenas se sua área fizer isso |
| Fórmulas em linha e em bloco | $r_c$, T = \frac{N}{r} | Não |
| Texto dentro de fórmulas | \text{ for English silent reading.} | Sim. Ele é impresso como texto comum. |
| Macros que recebem texto | \term{characters per minute} | Traduza o argumento, mantenha o comando |
| Legendas e notas de rodapé | \caption{Reading rates used in this paper.} | Sim |
| Listagens verbatim e de código | shelfmark count --unit chars book.epub # 100% of body text | Não, incluindo comentários dentro delas |
\url e o primeiro argumento de \href | \href{https://example.org/shelfmark/survey}{online appendix} | Mantenha a URL; traduza o texto do link |
| Caracteres escapados | 20\%, \$12, R\&D | Mantenha a barra invertida no texto |
Comentários com % | % TODO: replace the Chinese rate ... | Opcional. Os leitores nunca os veem. |
| Ties antes de referências | Table~\ref{tab:rates} | Mantenha em idiomas que usam espaços; opcional em chinês e japonês |
Todo o resto é texto comum: parágrafos, resumo, itens de lista e células de tabela.
O que testamos
Escrevemos sample-source.tex, um pequeno artigo inventado sobre estimativas de tempo de leitura para um aplicativo fictício chamado Shelfmark. Ele compila sem erros e contém um exemplo de cada construção da tabela acima, além de uma tabela booktabs, uma figura com legenda, dois comentários com %, um bloco verbatim com um % solto dentro e uma bibliografia inline.
Em seguida, pedimos a um modelo local que o traduzisse para chinês simplificado de três maneiras:
- Arquivo inteiro. Cole o arquivo completo e peça um arquivo traduzido que ainda compile.
- Com instruções. O mesmo, mais sete regras: não altere o preâmbulo, mantenha todos os comandos, ambientes, rótulos, referências e chaves de citação, deixe a matemática intacta exceto
\text{}, deixe blocos verbatim e URLs intactos, mantenha caracteres especiais escapados, mantenha os ties e traduza o texto, as legendas, as notas de rodapé e o texto dos links. - Segmentos. Deixe o preâmbulo totalmente fora da requisição (apenas a linha
\titleé enviada, então\datepermanece em inglês), divida o corpo em linhas em branco, pule o bloco verbatim, envie cada parte com as mesmas regras e remonte.
O modelo foi o Qwen 3.6 27B (Q4_K_M) no LM Studio, com o modo de raciocínio desativado e temperatura 0,3, em um Apple M4 Max com 64 GB de memória. Executamos cada condição três vezes, nove execuções no total, em 26 de outubro de 2026. O script é run_llm_latex_test.py, e todas as nove saídas estão publicadas sem edição na pasta de saídas. Se você nunca configurou um modelo local, nosso guia de tradução com LLM local cobre as configurações.
Compilamos cada saída com o Tectonic 0.17.0, que usa o motor XeTeX, uma vez exatamente como retornada e outra com uma configuração para chinês adicionada ao preâmbulo. Depois, lemos o texto de volta de cada PDF. Este foi um teste pequeno de um modelo, um par de idiomas e um arquivo. Ele mostra quais problemas acontecem e como detectá-los. Não classifica modelos ou prompts.
Resultado: A estrutura sobreviveu; o preâmbulo decidiu se o texto apareceria
check_latex_translation.py comparou cada saída com a fonte, e compile_check.py a compilou. As saídas completas estão em check-results.txt e compile-results.txt, e results.csv tem uma linha por execução.
| Verificação | Arquivo inteiro | Instruído | Segmentos |
|---|---|---|---|
| Rótulos, referências, citações e chaves de bibliografia inalterados | 3 de 3 | 3 de 3 | 3 de 3 |
Matemática inalterada (texto dentro de \text{} traduzido) | 3 de 3 | 3 de 3 | 3 de 3 |
| URLs, chaves e colunas de tabela intactas | 3 de 3 | 3 de 3 | 3 de 3 |
| O modelo adicionou um pacote chinês ao preâmbulo | 3 de 3 | 0 de 3 | 0 de 3 |
| Compila conforme retornado | 3 de 3 | 3 de 3 | 3 de 3 |
| Texto em chinês realmente presente no PDF conforme retornado | 3 de 3 | 0 de 3 | 0 de 3 |
| Bloco verbatim inalterado | 3 de 3 | 2 de 3 | 3 de 3 |
comentários % mantidos em inglês | 3 de 3 | 3 de 3 | 1 de 3 |
| Toda referência e citação é resolvida após adicionar a configuração em chinês | 3 de 3 | 3 de 3 | 3 de 3 |
Nosso verificador inicialmente relatou matemática alterada na primeira execução. A matemática estava correta: a ordem das palavras em chinês havia colocado $N$ antes de $r$ em uma frase. O verificador publicado compara segmentos matemáticos como uma coleção não ordenada por esse motivo, então a reordenação é permitida, mas um símbolo alterado não é.
1. "Não mexa no preâmbulo" produziu um PDF sem nenhum chinês
A regra do preâmbulo parece a instrução mais segura que você pode dar. O preâmbulo da nossa amostra carrega amsmath, booktabs e hyperref e define três macros, e nada disso precisa ser traduzido. Então as execuções instruídas e de segmentos o deixaram em paz, exatamente como ordenado.
Mas as fontes padrão em uma configuração LaTeX padrão não têm caracteres chineses. Todos os seis arquivos compilaram com código de saída 0. O Tectonic avisou, uma vez por caractere ausente, com linhas como Missing character: There is no 估 (U+4F30) in font [lmroman17-regular], e o arquivo de log registrou entre 554 e 577 deles por execução. Mas um aviso não interrompe a compilação. Quando extraímos o texto desses seis PDFs, eles continham os nomes dos autores, os números e a matemática, e zero caracteres chineses. Os três PDFs de arquivo inteiro continham de 481 a 490. Um script de compilação que verifica apenas se a compilação foi bem-sucedida, ou uma pessoa que apenas dá uma olhada no final da saída, teria enviado todos os seis.
As três execuções de arquivo inteiro, que não tinham essa regra, adicionaram \usepackage{ctex} por conta própria, e seus PDFs ficaram completos. Isso não é motivo para deixar um modelo reescrever seu preâmbulo. É motivo para ver a configuração do idioma de destino como parte do trabalho de tradução, feita uma vez, por você:
- Chinês: carregue ctex, que suporta pdfLaTeX, XeLaTeX e LuaLaTeX. Por padrão, ele escolhe fontes para o seu sistema operacional; nosso log mostra que ele carrega seu conjunto de fontes do macOS. Se o arquivo precisar compilar da mesma forma em outras máquinas,
\usepackage[UTF8,fontset=fandol]{ctex}usa as fontes gratuitas Fandol distribuídas com o TeX Live, que o Tectonic também baixa sob demanda. É isso que ocompile_check.pyadiciona. - Outros idiomas: carregue babel com o idioma de destino, para que a hifenização e as palavras geradas, como "Figure", "Table" e "Abstract", sigam o novo idioma. Japonês, coreano e idiomas da direita para a esquerda precisam cada um de sua própria configuração.
Após compilar, verifique o log em busca de Missing character e leia o PDF, não apenas o código de saída. Testamos apenas XeTeX via Tectonic; outros motores relatam uma fonte ausente de forma diferente.
2. A regra de escape vazou para a listagem de código
Nossas instruções diziam para manter caracteres especiais escapados, e em prosa essa é a regra correta: um % solto em LaTeX inicia um comentário e engole silenciosamente o resto da linha. Todas as nove execuções mantiveram 20\% no resumo.
Na primeira execução com instruções, o modelo também aplicou a regra dentro do bloco verbatim e traduziu o comentário de código ali:
source: shelfmark count --unit chars book.epub # 100% of body text
translation: shelfmark count --unit chars book.epub # 100\% 正文
Dentro de verbatim, nada é um comando, então o PDF imprime 100\% com a barra invertida. A correção não é um prompt melhor. Nunca envie blocos verbatim, lstlisting ou minted para um tradutor, como fez a condição de segmentos. Depois, traduza qualquer comentário neles manualmente se seus leitores precisarem.
3. Os comentários seguiram os limites da solicitação
O arquivo tem dois comentários %: uma nota acima das definições de macro e um TODO acima da listagem de código. As execuções de arquivo inteiro e com instruções deixaram ambos em inglês. A condição de segmentos traduziu o TODO em duas de três execuções, porque o TODO estava no mesmo bloco de um parágrafo que enviamos para tradução. Duas execuções de arquivo inteiro também adicionaram um comentário próprio após o pacote que inseriram.
Nada disso altera o PDF. Isso importa se o código-fonte traduzido voltar para coautores ou um repositório, onde um TODO traduzido não corresponde mais ao original e um comentário extra aparece em cada diff. O verificador relata comentários traduzidos como um aviso para que você possa decidir.
4. As verificações estruturais passaram e o significado ainda mudou
O resumo diz "um rótulo com erro de 20% ainda é útil". Em três de nove execuções, o chinês dizia que rótulos com erro dentro de 20% ainda são úteis, o que transforma uma tolerância em um limiar. Várias outras execuções reordenaram a frase de modo que a oração "embora" se ligasse à ideia errada, e uma ficou difícil de acompanhar. Esses são julgamentos de um leitor comparando o chinês com o inglês, não uma revisão cega, mas o ponto não depende da contagem exata: todas as verificações estruturais passaram nesses arquivos, porque o 20\%, a macro e as chaves estavam todos corretos.
Duas outras mudanças foram aceitáveis, mas vale conhecê-las. As execuções de arquivo inteiro escreveram \$12 como 12美元 ("12 dólares americanos"), o que elimina completamente a questão de escape. Duas execuções de arquivo inteiro também removeram a maioria dos vínculos ~ antes de \ref e \cite. Isso é inofensivo em chinês, que não coloca espaços entre palavras, mas em um idioma que coloca, um vínculo ausente permite que uma quebra de linha separe "Tabela" do seu número. O verificador relata vínculos como um aviso, não como uma falha.
Uma verificação estrutural informa que o arquivo ainda funciona. Ela não pode dizer que o artigo ainda diz a mesma coisa. Para isso, use uma leitura bilíngue do resumo, das afirmações e dos números, como descrito em nosso guia para revisar um artigo de pesquisa traduzido.
Um fluxo de trabalho que se sustenta
-
Obtenha o código-fonte e verifique o que você pode fazer com ele. No arXiv, artigos enviados em TeX geralmente oferecem seu código-fonte por meio de um link Source na página do resumo ou na página Other formats, como um arquivo gzip ou um arquivo tar quando há vários arquivos (ajuda do arXiv). Traduzir para sua própria leitura é uma coisa. Publicar a tradução é outra: a licença não exclusiva do próprio arXiv limita a reutilização por outros, enquanto CC BY e CC BY-SA permitem adaptações com atribuição, e CC BY-NC-ND não. Em caso de dúvida, pergunte aos autores.
-
Compile o original primeiro. Se ele não compilar antes da tradução, nada do que você aprender depois será confiável. Guarde o PDF original para comparação.
-
Configure o idioma de destino no preâmbulo você mesmo. Adicione
ctexoubabelcomo acima, compile uma vez com o texto em inglês e faça commit dessa alteração separadamente. -
Traduza o corpo sem o preâmbulo e sem blocos verbatim. Use uma ferramenta que analise LaTeX, ou envie o corpo em partes com regras explícitas, como na nossa condição de segmentos. O TransLaTeX, uma ferramenta de código aberto criada para isso, substitui construções LaTeX por tokens antes de enviar o texto a um tradutor automático. Sua documentação também diz que mantém o cabeçalho do documento intacto, não suporta macros e lida apenas com documentos de arquivo único, sem
\input. Mesmo uma ferramenta dedicada deixa a decisão do preâmbulo para você. -
Execute a verificação estrutural em cada par de arquivos.
python3 check_latex_translation.py main.tex main-zh.tex --keep ShelfmarkEla compara o preâmbulo, nomes de comandos, ordem dos ambientes, rótulos, referências, citações, chaves de bibliografia, matemática, blocos verbatim, URLs,
%,&e#não escapados, equilíbrio de chaves, vínculos, comentários e quaisquer termos que você peça para manter. Espere que a linha do preâmbulo falhe após o passo 3 quando você comparar com o original; compare com seu arquivo em inglês atualizado. Para um projeto dividido em vários arquivos\input, verifique cada par. -
Compile e leia o PDF.
python3 compile_check.py main-zh.texEle relata referências não resolvidas (
??), citações não resolvidas ([?]) e glifos ausentes. Depois, abra o PDF e leia o resumo, cada legenda e cada tabela em comparação com o original. -
Faça uma leitura bilíngue das afirmações e dos números. É aqui que nossas três frases alteradas teriam sido detectadas. Mantenha um breve glossário de tradução para os termos técnicos do artigo, para que o mesmo termo não seja traduzido de três maneiras.
Onde o BookTranslator se encaixa
O tradutor de documentos do BookTranslator aceita arquivos .tex junto com PDF, DOCX, EPUB, Markdown e outros formatos estruturados. Sua FAQ diz que o resultado é retornado em "um arquivo utilizável e adequado ao formato sempre que esse formato o suportar".
A página do produto não descreve como ele trata macros LaTeX, matemática ou o preâmbulo, e não executamos esta amostra pelo BookTranslator para este artigo. Qualquer que seja a ferramenta que você use, faça os passos 1 a 3 antes de traduzir e os passos 5 a 7 depois. Um arquivo que mantém um preâmbulo apenas em inglês ainda compilará sem texto em chinês, e uma afirmação alterada ainda passará em todas as verificações estruturais.
Se você só tem o PDF de um artigo, não o código-fonte, o fluxo de trabalho é diferente: consulte nosso guia para traduzir um artigo de pesquisa mantendo sua estrutura. Se seu código-fonte for Markdown em vez de LaTeX, a mesma separação entre maquinário e prosa se aplica, com armadilhas diferentes; testamos isso em Como traduzir arquivos Markdown.
Obtenha os arquivos de teste
Tudo deste teste é livre para reutilização:
- sample-source.tex: a amostra em inglês de 98 linhas;
- check_latex_translation.py: o verificador estrutural (apenas biblioteca padrão do Python);
- compile_check.py: compila cada arquivo conforme retornado e com uma configuração em chinês, e conta referências não resolvidas, citações não resolvidas e glifos ausentes (requer Tectonic e pdftotext);
- run_llm_latex_test.py: as três condições de prompt para qualquer servidor local compatível com OpenAI;
- as nove saídas na pasta outputs, com check-results.txt, compile-results.txt e results.csv.
Posts Relacionados





