0 votos
693 visualizações

Olá a todos,

Gostaria de pedir ajuda para criar uma Bíblia de Referência.
Temos um texto bíblico com referências cruzadas.

Por padrão, a ordem das referências cruzadas é
“chamado - número do versículo - referências”
como “a 1 Sl 102:25; Is 40:21; Jo 1:1,2; Hb 1:10”

Quero alterá-la para colocar o capítulo primeiro, reunindo todos os chamados sob o mesmo versículo, como nas Bíblias de referência comuns, como
“Capítulo 1
1 a Sl 102:25; Is 40:21; Jo 1:1,2; Hb 1:10 b Sl 89:11; 90:2; At 17:24; Rm 1:20; Hb 11:3 c Jó 38:4…”

Acho que alguns scripts são necessários. Alguém pode ajudar?

Tradução automática de English
PTXprint por (102 pontos)
reexibida | 693 visualizações

6 Respostas

0 votos

Hmm. Sim, isso quase certamente só pode ser feito pré-processando o código. O primeiro do capítulo recebe o texto adicional de ‘Capítulo’ e assim por diante. Tentar fazer isso no TeX seria muito difícil.

Assumindo que você reexecutará o processo sempre que usar seleções do texto, então deve funcionar bem. O código atual funciona construindo uma lista de gatilhos para aplicar as listas externas, que contém entradas como esta:

\AddTrigger MAT28.15
\x - \xo 28:15 \xt Mt 9:31; 27:8\x*
\EndTrigger

\AddTrigger MAT28.19
\x - \xo 28:19 \xt Mt 13:52; 24:14; Mk 16:15-16; Lk 24:47; Acts 1:8; 2:38; 8:16; 14:21; Rom 6:3; 1 Cor 1:13; 2 Cor 13:14; Gal 3:27\x*
\EndTrigger

Você pode criar seus próprios arquivos de gatilho em vez de deixar o python fazer isso com qualquer programa de manipulação de texto que você gostar - perl, python ou até sed seriam coisas que eu consideraria, do mundo unix.
O que exatamente você colocaria na parte USFM do arquivo para gerar o formato que deseja, não tenho 100% de certeza. Não deve haver problema em ter múltiplos gatilhos em um
versículo, então você não precisa mesclar suas linhas, mas espero que você precise de alguns marcadores personalizados para gerar os chamados em sobrescrito.

Mas tenho assumido que você não quer chamadores no texto, estou errado nisso? Seu exemplo os tem… Como o leitor conecta o chamado com a palavra? Você realmente quer mesclar suas referências cruzadas no meio do texto bíblico? Espero que isso precise ser um processo manual ou, no máximo, semiautomático.

Tradução automática de English
por (1,1k pontos)

Olá,

Acho que minha explicação não foi suficiente.
Nosso texto tem referências cruzadas no meio do texto, como

\v 1 \x + \xo 1:1 \xt Иох 1:1,2; Евр 1:10\xЭхэнд \x + \xo 1:1 \xt Дуу 8:3; 33:6; 89:11,12; 102:25; 136:5; 146:6; Иса 44:24; Иер 10:12; 51:15; Зех 12:1; Үйл 14:15; 17:24; Кол 1:16,17; Евр 11:3; Илч 4:11; 10:6\xБурхан тэнгэр ба газрыг бүтээжээ.

Então, o resultado é assim:
タイトルなし

Portanto, minha pergunta é sobre a mudança de ordem e a mesclagem dos chamados sob o mesmo versículo.

Tradução automática de English
0 votos

Então, se eu puder reformular o que entendo agora… o que você quer fazer é processar os dados \xo fazendo o seguinte:

  1. Anteceder à nota atual uma nota nula com o capítulo (anotado), se for diferente do último. (ex.: \x - \xo Chapter 2\x* \x + \xo 1 \xt ...\*)
  2. Imprimir o número do versículo apenas se for diferente da última referência.
  3. Excluir completamente a entrada \xo se for idêntica à última.

Estou certo de que poderia escrever isso em perl, mas não conheço python bem o suficiente. Se você quer um script em perl ou não dependeria de coisas como o sistema operacional que você e seus colegas estão usando (perl está quase certamente disponível no linux, mas não, acredito eu, normalmente no windows).

Tradução automática de English
por (1,1k pontos)

Sim, exatamente.
Eu uso Perl no Windows, então faça um script em perl para isso, por favor.
Obrigado.

Tradução automática de English

Isso parece funcionar. Você terá que substituir a primeira linha pelo que for necessário no windows.

#!/usr/bin/perl -w
# This little script answers a request https://community.scripture.software.sil.org/t/cross-references-in-reference-bible/3470/2 "
# * Prepend to the current note a null note with the (annontated) chapter if that is different to the last one. (e.g. \x - \xo Chapter 2\x* \x + \xo 1 \xt ...\*)
# * Only print the verse number if that is different to the last reference.
# * Entirely delete the \xo entry if it is identical to the last one.
#
# It assumes that all xo entries are in the format chapter:verse, and that verses in xref \xo entries are only numeric. 

use strict;
my $chapter='';
my $verse='';

$\=''; # Swallow whole file as one chunk
$/='';
sub beautify {
        my ($c,$v)=@_;
        if ($c ne $chapter) {
                $chapter=$c;
                $verse='';
                print "\\x - \\xo Chapter $c\\x*";
        }
        if ($v ne $verse) {
                $verse=$v;
                "\\xo $v";
        }
}

while(my $file=(<>)) {
        foreach my $chunk (split(/(\\x.*?\\x\*)/, $file)) {
                $chunk=~s/\\xo (\d+):(\d+)/beautify($1,$2)/e;
                print $chunk;
        }
}
Tradução automática de English

Obrigado. Seu script funciona bem no Windows sem nenhum problema.
O resultado é este:
タイトルなし
Agora, quero mudar a ordem. O resultado até agora é
“chamado - número do versículo - referências” como “а 1 Иох 1:1,2; Евр 1:10”,
Eu quero
“número do versículo - chamado - referências” como “1 а Иох 1:1,2; Евр 1:10” como no meu primeiro post.
Além disso, todos os chamados em um mesmo versículo podem estar em uma única linha?
Você tem alguma ideia?

Tradução automática de English
0 votos

Se você quiser alcançar isso, precisará fazer um pouco de programação, para:

  1. Extrair todas as referências cruzadas de um versículo para uma única referência cruzada, seja no SFM ou em um arquivo de gatilho e, em seguida, removê-las do texto
  2. Converter as posições de referência cruzada no texto em pontos de rótulo simples com um rótulo fixo adequado (para que pareça uma âncora de referência cruzada, mas não há referência cruzada)
  3. Extrair esses mesmos rótulos para a referência cruzada complexa que você tem no início do versículo.
  4. Desativar os chamados tanto no texto quanto na nota.
Tradução automática de English
por (658 pontos)
0 votos

Para contradizer Martin (ligeiramente), o script provavelmente pode ser modificado para lhe dar algo próximo. Não tenho certeza exata de como será exibido, no entanto. Se você fizer com que ele diga:

     if ($v ne $verse) {
                $verse=$v;
                print "\\x - \\xo $v\\*";
        }

Então, de forma semelhante a como você obtém uma nota de rodapé vazia dizendo Capítulo X, você obterá uma nota de rodapé vazia dizendo Y (na primeira nota de rodapé do versículo Y) e, em seguida, o resto da 1ª nota de rodapé naquele versículo. Outras notas de rodapé não terão um capítulo ou um número de versículo. MAS você precisará ativar notas paragrafadas e provavelmente precisará alterar algumas coisas, como o espaçamento entre notas de rodapé (não me lembro do nome, mas acho que está na interface do usuário agora). Depois de ativar as notas paragrafadas, você não terá o versículo Y em sua própria linha, a menos que inclua alguns comandos TeX crus no que o perl está emitindo. (prefixar o conteúdo da nota de rodapé para o versículo Y com \penalty -10000\space pode ser suficiente).

Provavelmente, em algum momento neste exercício, essa abordagem improvisada atingirá seus limites, e a resposta de Martin se tornará a maneira certa de fazer isso, ou mudanças muito significativas no código TeX (que provavelmente quebrariam os projetos de outras pessoas) serão necessárias.

No lado do TeX, você precisaria ‘sequestrar’ a macro \xo e fazê-la interpretar os parâmetros capítulo:versículo como valores, antes de entrarem no fluxo de saída, e, em seguida, fazer a comparação e a redefinição da saída no TeX. O perigo é que, se alguém tivesse um \xo que não fosse sempre seguido por capítulo:versículo, e em vez disso tivesse capítulo.versículo ou similar, o código daria erros estranhos e inesperados.
Definir macros robustas no TeX é difícil, e não há nenhum padrão que defina o que as pessoas colocarão em \xo (nem uma garantia de que o usem apenas em referências cruzadas!).
Pensando um pouco mais, na verdade seria muito melhor definir sua própria macro com um terminador definido, que por sua vez se resolveria para \xo, em vez de sequestrar \xo.
ex.: \def\zmyxrefstyle#1:#2\*{comparação} para definir quaisquer prefixos para o chamado.
Claro, você ainda teria que fazer o código gerador do chamador da nota de rodapé colocar o número do capítulo e/ou o número do versículo antes do chamado. Estou adivinhando que levaria pelo menos meio dia de programação e depuração, mas pode haver coisas que eu esqueci que o empurrariam para uma semana ou três.

Sem uma chamada muito clara de vários usuários, é improvável que encontraremos tempo para fazer isso a qualquer momento no próximo ano.

Tradução automática de English
por (1,1k pontos)
0 votos

Aqui está uma maneira que pensei nesta manhã. Precisaremos escrever um novo marco, digamos \zcaller*, que alguém possa inserir em uma referência cruzada / nota de rodapé para que o ptxprint insira o chamador naquele ponto. Então \x - \xo 1\xt Gen 1:1\x* se torna \x - \xo 1\xt \zcaller*Gen 1:1\x* e depois desativamos a saída dos chamadores de notas. Isso envolve a equipe de desenvolvimento em algum trabalho, mas é muito menos complicado do que as páginas de pensamentos até agora!

Tradução automática de English
por (658 pontos)
0 votos

Ainda assim, não eliminará múltiplos 1 quando houver múltiplas referências cruzadas em um versículo. Mas isso é apenas uma questão de excluir o \xo das referências cruzadas subsequentes em um versículo.

Tradução automática de English
por (658 pontos)

Perguntas relacionadas

0 votos
1 resposta 73 visualizações
Em um projeto Paratext RTL, não encontrei nenhuma combinação de Configurações de Referências Bíblicas, texto dos versículos e ... de o Paratext fazer isso corretamente, não é?
Denny Emser 115 perguntada 4 dias atrás
+1 voto
1 resposta 180 visualizações
Não tenho certeza se isso é um bug ou não, mas como acabei de passar um tempo tentando resolver um problema que ... que eu já estivesse em vários capítulos e versículos do livro.
anon297911 424 perguntada Fev 10, 2021
0 votos
9 respostas 693 visualizações
Ao imprimir um módulo para um idioma baseado em escrita árabe, notei que as referências de versículos são impressas ... , vejo o mesmo erro nos títulos de passagens paralelas.
Jim_Smith 131 perguntada Out 3, 2023
0 votos
4 respostas 300 visualizações
Estou usando o PTXprint 1.9. O arquivo USFM com o qual estou trabalhando tem notas de rodapé, mas não inclui o ... na área de notas. Eu perdi essa configuração em algum lugar?
da4396 126 perguntada Jul 22, 2021
0 votos
1 resposta 62 visualizações
Estou trabalhando em uma publicação de um único livro. No passado, para livros únicos, consegui colocar um cabeçalho com ... . O que mais posso fazer para diagnosticar o problema?
Rebecca Peak 102 perguntada Jun 25
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
For just as each of us has one body with many members, and these members do not all have the same function, so in Christ we, though many, form one body, and each member belongs to all the others.
Romans 12:4-5
3,049 perguntas
6,007 respostas
5,673 comentários
2,029 usuários