scieloorg / opac

SciELO - On-line Public Access Catalog - OPAC
BSD 2-Clause "Simplified" License
9 stars 22 forks source link

Equação estão sendo exibidas de forma incorreta #2063

Open gitnnolabs opened 3 years ago

gitnnolabs commented 3 years ago

Descrição do problema

Algumas equações não estão sendo exibidas corretamente.

Passos para reproduzir o problema

  1. Acesse a página https://www.scielo.br/j/aabc/a/vR75PXVgmxtML8Fx6q6vTbR/?lang=en
  2. Repare que a segunda equação não é exibido corretamente.

Comportamento esperado

Exibir corretamente todas as equações.

Screenshots ou vídeos

Captura de Tela 2021-09-23 às 15 36 14

rafaelpezzuto commented 3 years ago

@robertatakenaka

Resumindo, o problema está relacionado a estruturas do tipo (que estão nos XMLs):

<inline-formula>
    <alternatives>
        <tex-math>d&gt;0</tex-math>
        <mml:math display="inline">
            <mml:mrow>
                <mml:mi>d</mml:mi>
                <mml:mo>&gt;</mml:mo>
                <mml:mn>0</mml:mn>
            </mml:mrow>
        </mml:math>
    </alternatives>
</inline-formula>

O site tenta exibir o que encontra primeiro no elemento alternatives. Nos casos em que as equações não são apresentadas (e há um monte), o elemento <tex-math> sempre está em primeiro lugar. E para elementos <tex-math> serem renderizados corretamente, o conteúdo deve estar encapsulado entre caracteres delimitadores do modo "Equação" do TeX (por exemplo, caracteres $ ou $$). Outra forma é estarem encapsulados em elementos \begin{} e \end{}. Por exemplo, no caso acima, a equação seria exibida corretamente nas seguintes situações:

1) Com <tex-math> corrigido:

<inline-formula>
    <alternatives>
        <tex-math>$d&gt;0$</tex-math>
        <mml:math display="inline">
            <mml:mrow>
                <mml:mi>d</mml:mi>
                <mml:mo>&gt;</mml:mo>
                <mml:mn>0</mml:mn>
            </mml:mrow>
        </mml:math>
    </alternatives>
</inline-formula>

2) Tendo a primeira alternativa o elemento <mml>:

<inline-formula>
    <alternatives>
        <mml:math display="inline">
            <mml:mrow>
                <mml:mi>d</mml:mi>
                <mml:mo>&gt;</mml:mo>
                <mml:mn>0</mml:mn>
            </mml:mrow>
        </mml:math>
        <tex-math>$d&gt;0$</tex-math> # aqui é irrelevante acrescentar os caracteres `$` pois a primeira alternativa é utilizada
    </alternatives>
</inline-formula>

3) Sem <tex-math> ou com apenas <mml>:

<inline-formula>
    <alternatives>
        <mml:math display="inline">
            <mml:mrow>
                <mml:mi>d</mml:mi>
                <mml:mo>&gt;</mml:mo>
                <mml:mn>0</mml:mn>
                        </mml:mrow>
        </mml:math>
    </alternatives>
</inline-formula>

Detalhando, após uma ampla análise verifiquei que:

  1. Assim como no site clássico, o site novo usa a biblioteca MathJax para renderizar equações;
  2. No site novo estamos utilizando a seguinte versão da biblioteca: 2.7.5;
  3. No código-fonte do novo site, a configuração carregada é o arquivo padrão chamado por https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG
  4. Isso significa que a configuração atual para renderizar equações segue o arquivo de configuração padrão TeX-AMS-MML_SVG;
  5. Por característica dessa configuração, são renderizadas equações delimitadas pelos caracteres $ (equações na própria linha do texto) e $$ (equações multilinha);
  6. Também são renderizadas equações delimitadas por blocos \begin{qualquer-coisa} e \end{qualquer-coisa};
  7. São renderizadas equações quando estiverem encapsuladas em marcação <mml>;
  8. Qualquer equação que não esteja enquadrada nas regras 5, 6 ou 7 não será renderizada.

Notas A. Há artigos que exibem equações corretamente (por exemplo, https://www.scielo.br/j/resr/a/fz3Ln3QnW4HJpwnwKpVjqDJ/?lang=en); B. Há artigos que não exibem equações corretamente (por exemplo, aquele que originou esta issue);

Nos artigos em que as equações são exibidas corretamente, há a alternativa de exibir a fórmula por meio de <mml>, isto é:

<disp-formula id="e01">
    <mml:math display="block" id="m1">
        <mml:mrow>
    <mml:mo> </mml:mo>
    <mml:mi>L</mml:mi>
    <mml:mi>D</mml:mi>
    <mml:mi>L</mml:mi>
    <mml:mo>−</mml:mo>
    ...
    <label>(1)</label>
</disp-formula>

Os casos em que as equações não estão sendo renderizadas corretamente ocorrem porque o XML não contém as marcações <mml> ou porque contém a marcação <tex-math> mal formada (sem caracteres delimitadores) e como primeira opção.

rafaelpezzuto commented 3 years ago

@robertatakenaka agora preciso pensar nas correções: A. Sempre escolher como primeira alternativa a versão <mml> B. Encapsular no modo "Equação" (usando $ ou $$) tudo que estiver em <tex-math>

rafaelpezzuto commented 3 years ago

@jamilatta Para sua ciência. @robertatakenaka pediu pra você prosseguir.

robertatakenaka commented 2 years ago

@RPostalli As equações que não estão sendo renderizadas é devido à marcação incorreta. Quando usado a tag <tex-math/> é obrigatório uma das 3 abordagens:

RPostalli commented 2 years ago

@robertatakenaka quais são os casos? Pode me sinalizar no doc de tec para eu pedir os reprocs por favor?