Descrição do problema
No gerador de PDF (packtools/sps/formats/pdf), quando uma <table-wrap> está dentro de uma subseção (<sec> aninhada dentro de outra <sec>), ela é duplicada no documento gerado: uma cópia aparece despejada em bloco logo após o título da seção-pai (antes de qualquer parágrafo), e outra cópia aparece de novo na posição natural, dentro da subseção.
Isso acontece porque extract_body_data (pipeline/xml.py) itera xml_tree.findall('.//sec'), que retorna cada seção aninhada como entrada própria, e cada uma busca .//table-wrap em todos os seus descendentes. Uma tabela dentro de uma subseção é assim coletada tanto pela seção-pai quanto pela subseção. O mecanismo de deduplicação que já existe para figuras (seen_fig_keys) não tinha equivalente para tabelas.
Passos para reproduzir o problema
- Gerar o PDF de um artigo real com pelo menos uma tabela dentro de uma subseção (ex.:
a5.xml do corpus de testes, seção "2. MATERIALS AND METHODS" com subseções internas).
- Abrir o PDF gerado e observar a página logo após o título da seção principal.
Comportamento esperado
Cada tabela deve aparecer uma única vez, na posição em que é citada no texto da subseção correspondente. Nenhuma tabela deve ser despejada antes do primeiro parágrafo da seção.
Screenshots ou vídeos
Anexos
NA
Ambiente utilizado
packtools branch master (commit 04444662), pipeline packtools/sps/formats/pdf, geração via LibreOffice + python-docx.
Descrição do problema
No gerador de PDF (
packtools/sps/formats/pdf), quando uma<table-wrap>está dentro de uma subseção (<sec>aninhada dentro de outra<sec>), ela é duplicada no documento gerado: uma cópia aparece despejada em bloco logo após o título da seção-pai (antes de qualquer parágrafo), e outra cópia aparece de novo na posição natural, dentro da subseção.Isso acontece porque
extract_body_data(pipeline/xml.py) iteraxml_tree.findall('.//sec'), que retorna cada seção aninhada como entrada própria, e cada uma busca.//table-wrapem todos os seus descendentes. Uma tabela dentro de uma subseção é assim coletada tanto pela seção-pai quanto pela subseção. O mecanismo de deduplicação que já existe para figuras (seen_fig_keys) não tinha equivalente para tabelas.Passos para reproduzir o problema
a5.xmldo corpus de testes, seção "2. MATERIALS AND METHODS" com subseções internas).Comportamento esperado
Cada tabela deve aparecer uma única vez, na posição em que é citada no texto da subseção correspondente. Nenhuma tabela deve ser despejada antes do primeiro parágrafo da seção.
Screenshots ou vídeos
Anexos
NA
Ambiente utilizado
packtoolsbranchmaster(commit04444662), pipelinepacktools/sps/formats/pdf, geração via LibreOffice + python-docx.