Folha de estilos é um recurso presente em todo programa moderno de desenho ou edição de texto. Com um estilo pré-definido, a gente ganha alta produtividade na formatação de texto ou gráficos: o estilo guarda todas as características que a gente quer aplicar, e a formatação é feita em segundos.
O novo Scribus já está com recursos de folha de estilo bastantes avançados e evoluindo num ritmo lento mas constante. E com a programação em Pyhton presente no Scribus, a facilidade da folha de estilos é ampliada para um novo patamar, aumentando os ganhos de produtividade em diagramação.
O comando Scribus-Python scribus.setStyle() aplica um estilo a um quadro selecionado, ou a um texto selecionado dentro de um quadro:
scribus.setStyle(estilo, quadro)
Para ajudar a aplicar este comando dentro de um script de uso geral, criei a função aplicaEstilo() para criar um nome de estilo, se não existir na folha de estilos.
def aplicaEstilo(estilo,quadro): # Tenta aplicar estilo try: scribus.setStyle(estilo, quadro) except: # Se dá erro (o estilo não existe), cria um estilo. scribus.createParagraphStyle(estilo) scribus.setStyle(estilo, quadro) return quadro
Dentro de um quadro de texto, deve-se selecionar o texto para aplicar o estilo. No caso de estilos de parágrafo, basta qualquer parte do parágrafo estar selecionada para o parágrafo inteiro se formatar. Isto funciona em todos os programas.
No Scribus, existe o comando scribus.selectText() para selecionar texto em quadros.
scribus.selectText(inicio, comprimento, quadro)
Mas como se saber qual parágrafo do texto iniciar e qual o comprimento do parágrafo para selecionar? Eu usei um método Python para strings de texto, .splitlines(), que devolve uma lista com as linhas do texto. Cada linha ou parágrafo termina com marca de fim-de-parágrafo. Com argumento zero, .splitlines(0) devolve a lista sem incluir a marca de fim-de-parágrafo. Com argumento 1, .splitlines(1) devolve as linhas com a marca incluída.
Agora eu uso o comando scribus.getAllText() do Scribus para pegar todo o texto e separar em uma lista de linhas. Depois, uso comandos Python len () para calcular o tamanho de cada linha (junto com a marca de fim-de-parágrafo) e assim obter a posição inicial de cada parágrafo, somando os comprimentos de cada parágrafo anterior.
No trecho de código abaixo, eu pego os tamanhos dos parágrafos até o quarto: o título de uma matéria, o subtítulo, o autor da matéria e o primeiro parágrafo. Ao manipular as atrings de texto, é necessário usar a função Python unicode() para contar como um caracter todos os caracteres acentuados, que ocupam mais de um byte.
alltext = scribus.getAllText(quadroDeTexto) linhas = alltext.splitlines(1) tit = len(unicode(linhas[0])) subtit = len(unicode(linhas[1])) aut = len(unicode(linhas[2])) prim = len(unicode(linhas[3]))
Agora eu já posso formatar os parágrafos com estilos apropriados. Primeiro, seleciono todo o texto de um quadro ou sequência de quadro e aplico o estilo “Normal”. Aproveito para hifenizar todo o texto.
inicioTitulo = 0 comprTexto = len(unicode(alltext)) scribus.deselectAll() scribus.selectText(inicioTitulo, comprTexto-1, quadroDeTexto) aplicaEstilo(estiloNormal, quadroDeTexto) scribus.hyphenateText() scribus.deselectAll()
Repare que antes de selecionar o texto eu precisei desselecionar tudo. É uma idiossincrasia do Scribus. Se eu não fizer isto, a função scribus.selectText() não funciona corretamente.
Para calcular o próximo ponto de início da seleção, somo os valores de comprimento de cada parágrafo. Na operação, aproveito para des-hifenizar os textos que não precisam de hífen.
# Formata o título inicioTitulo = 0 scribus.deselectAll() scribus.selectText(inicioTitulo, tit-1, quadroDeTexto) aplicaEstilo(estiloDoTitulo, quadroDeTexto) scribus.dehyphenateText() # Formata o subtítulo inicioSubTitulo = tit scribus.deselectAll() scribus.selectText(inicioSubTitulo, subtit-1, quadroDeTexto) aplicaEstilo(estiloDoSubtitulo, quadroDeTexto) scribus.dehyphenateText() # Formata a assinatura inicioAutor = tit + subtit scribus.deselectAll() scribus.selectText(inicioAutor, aut-1, quadroDeTexto) aplicaEstilo(estiloDoAutor, quadroDeTexto) scribus.dehyphenateText() # Formata o primeiro parágrafo inicioTexto = tit + subtit + aut scribus.deselectAll() scribus.selectText(inicioTexto, prim-1, quadroDeTexto) aplicaEstilo(estiloDoPrimeiroParagrafo, quadroDeTexto) scribus.deselectAll()
Com este script, posso carregar um texto em quadros e aplicar todos os estilos que me interessam em poucos segundos. Observe que título, subtítulo, autor e primeiro parágrafo já devem estar na ordem. O texto também é “limpo” de parágrafos vazios e de dois ou mais espaços entre os caracteres, no início e no final das linhas.
Baixe o script Aplica estilos 1 (2009-06-14a) para aplicar estilos. Modifique-o conforme suas necessidades, mudando o nomes dos estilos ou as medidas gráficas no início do código.
Na sequência abaixo, veja a script em ação. Observe que a formatação dos estilos já deve estar feita antecipadamente conforme o projeto gráfico do veículo. O script não faz isto.
Colheita de soja. Foto: Wenderson Araujo/Trilux Fotógrafos de mídias rurais já perderam a conta das…
João Batista MezzomoAuditor fiscal O que está por trás de tudo o que está acontecendo…
A.k.a. "SexyCyborg". A mulher do século 21. Naomi Wu testa seu iluminador de implantes na…
A principal ferramenta do jornalista de dados é a planilha, tipo LibreOffice Calc, M.S. Excel…
Rita Almeida, 9 de março de 2019 Psicóloga Rita Almeida: não delirantes, mas deliroides. Não…
Rafael Azzi5 de outubro de 2018 Você se pergunta como um candidato com tão poucas…
View Comments
gostaria de saber como faço as linha para separaçao do jornall quero fazer um jornall para divulgar peuqenos negocios masnao sei montar a pagina agradeceria
se me enviace um modelo
onde eu trabalharia nele obrigado paz.
Olá, Jairo!
Diagramar jornais é um dos conteúdos do curso de Jornalismo de 4 anos. Não é algo que se aprenda de um dia para outro. Você até pode aprender sozinho, mas é um caminho árduo e exige muito estudo, principalmente leitura de inglês. Mas, neste site, coloco muitas dicas. Sinta-se à vontade para navegar por ele e aproveitar.
Sucesso!