Scribus - Alinhar texto verticalmente dentro de um quadro de texto


6

Como alinhar verticalmente o texto dentro de um quadro de texto Scribus?


Para esclarecer: Eu tenho um 7.4590 de largura x 0.9810 no quadro de texto alto com uma linha de texto de 55,0 pt (fonte Century Schoolbook Regular). O Scribus, por padrão, coloca o texto no canto superior esquerdo do quadro de texto. O texto consome cerca de 0,5 pol, verticalmente, do quadro de texto. Quero saber como (se possível) posso alinhar verticalmente o texto dentro do quadro de texto para que fique centralizado com aproximadamente 0,25 de espaço em branco acima e abaixo do texto. Isso é facilmente realizado no Microsoft Publisher; apenas vendo se consigo fazer isso no Scribus.
iokevins 12/01

Respostas:


2

Usando o Scribus 1.5.4:

  1. Clique com o botão direito do mouse em uma caixa de texto e selecione Text Properties;
  2. Clique em Column & Text Distances;
  3. Na primeira linha, altere Vertical Alignmentpara o valor desejado (por exemplo Middle).

Captura de tela do menu Propriedades do texto

Não há necessidade de scripts, margens manuais ou magia negra.


2

Usando o Scribus 1.4.6, o seguinte centro de script (vertical), alinhar o conteúdo de um quadro de texto por Alessandro Rimoldi, foi capaz de alinhar verticalmente o texto dentro de um quadro de texto:

  • fazê-lo automaticamente, mesmo quando o espaçamento entre linhas e / ou o deslocamento da primeira linha for alterado posteriormente
  • e com vários parágrafos de estilos diferentes

Aqui está o script (se necessário, uma breve instrução sobre como usar o script segue estas linhas de código):

#!/usr/bin/python
"""
this script adjust the top and bottom distance of a text frame
to exactly put its content in the middle of the frame
@author: alessandro rimoldi
@version: 1.0 / 20090209
@copyright (c) 2009 alessandro rimoldi under the mit license
           http://www.opensource.org/licenses/mit-license.html
"""
import sys
try:
   import scribus
except ImportError:
   print "This script only works from within Scribus"
   sys.exit(1)

# check that the selection is one text frame and get that frame
frame_n = scribus.selectionCount()
if frame_n == 0 :
    scribus.messageBox('Error:', 'No frame selected');
    sys.exit(1)
elif frame_n > 1 :
    scribus.messageBox('Error:', 'You may select only one frame');
    sys.exit(1)

frame = scribus.getSelectedObject(0)
try:
    char_n = scribus.getTextLength(frame)
except scribus.WrongFrameTypeError:
    scribus.messageBox('Error:', 'You may only adjust text frames');
    sys.exit(1)

if char_n == 0 :
    scribus.messageBox('Error:', 'You can\'t adjust an empty frame');
    sys.exit(1)

if (scribus.textOverflows(frame) == 1) :
    scribus.messageBox('Error:', 'You can\' center a text which is overflowing');
    sys.exit(1)

# get some page and frame measure

(x, y) = scribus.getPosition(frame)

(w, h) = scribus.getSize(frame)

original_height = h

(dl, dr, dt, db) = scribus.getTextDistances();

scribus.setTextDistances(dl, dr, 0, 0);

# if the frame doesn't overflow, shorten it to make it overflow
while ((scribus.textOverflows(frame) == 0) and (h > 0)) :
    h -= 10
    scribus.sizeObject(w, h, frame)

# resize the frame in 10pt steps
while (scribus.textOverflows(frame) > 0) :
    h += 10
    scribus.sizeObject(w, h, frame)

# undo the latest 10pt step and fine adjust in 1pt steps
h -= 10
scribus.sizeObject(w, h, frame)

while (scribus.textOverflows(frame) > 0) :
    h += 1
    scribus.sizeObject(w, h, frame)


scribus.sizeObject(w, original_height, frame)

dt = (original_height - h) / 2

scribus.setTextDistances(dl, dr, dt, dt);

Aqui está como usar o script:

  1. copie e cole o script em um documento de texto (usando a nota do bloco ou o bloco de notas, por exemplo) sem formatação de estilo aplicada ao documento;
  2. salve o documento como um arquivo .py , chamando-o como o nome desejado;
  3. no Scribus, selecione o quadro de texto ;
  4. vá para Script (ao lado de Extras) no menu principal na parte superior e selecione Executar scripts ... ;
  5. uma janela Executar Script é exibida na qual você seleciona o arquivo .py que você criou;
  6. pressione OK .

O texto dentro do quadro de texto selecionado será então centralizado verticalmente.

Eu poderia experimentar pelo menos duas desvantagens com este script:

  • é necessário executar novamente o script se a altura ou a largura do quadro de texto foram modificadas
  • ele não pode centralizar o texto se estiver transbordando, pois cria algum tipo de margens superior e inferior (talvez não seja ideal para textos grandes)

Esse script supera o fato de que o script mencionado na resposta de Jon Bentley não funcionou para mim (pelo menos no Scribus 1.4.6), mostrando uma mensagem de erro com a seguinte linha:

ValueError: as distâncias de texto fora dos limites devem ser positivas.

que talvez esteja relacionado mais ao documento do que ao próprio script.


1

Selecione o quadro de texto e pressione F2 ou clique com o botão direito do mouse e escolha propriedades. Em seguida, selecione a seção Forma. Lá, você pode definir um deslocamento da margem esquerda a partir da borda do quadro de texto que alinhará o texto no quadro. Você também pode definir guias e colunas se isso estiver mais alinhado com sua meta.


Obrigado W_Whalley - aumentar a margem esquerda ajusta as compensações horizontais. : o) Batendo a margem superior parece funcionar, mas em Scribus o texto quase que imediatamente desaparece de vista, mesmo que ele não está nem perto do limite inferior da moldura de texto ....
iokevins

@schultkl, obrigado pelo esclarecimento. Usando o tamanho do quadro de texto e uma fonte de 54 pt, defino o deslocamento do texto como linha de base de caracteres para -20% e centralizei aproximadamente o texto no quadro. Aumentando a altura da caixa de texto para 1 polegada, deixe-me fazê-lo com a fonte de 55 pt. Aumentar a altura do quadro de texto não é problema porque os quadros de texto podem se sobrepor.
W_Whalley

1

Surpreendentemente, para um recurso tão simples e comum, não parece haver uma opção para isso no Scribus a partir da versão 1.4.5. Aqui estão três soluções alternativas (nenhuma das quais, infelizmente, são as soluções ideais), uma delas baseada na resposta de @ W_Whalley (que está desatualizada para a interface atual do Scribus):

Defina manualmente o espaçamento no quadro de texto

Adaptado da resposta de @ W_Whalley:

  1. Abra Propriedades para o quadro de texto (selecione e pressione F2 ou clique com o botão direito do mouse e selecione Propriedades).
  2. Selecione a guia Texto .
  3. Abra o menu suspenso Colunas e distâncias do texto .
  4. Ajuste as margens para alcançar o alinhamento desejado.

Desvantagens:

  • Você terá que trabalhar as margens manualmente.
  • Isso só resultará em uma aproximação, a menos que você trabalhe duro para calcular as margens.
  • Você precisará refazê-lo sempre que fizer uma alteração que altere o alinhamento.

Alinhar o próprio quadro de texto em outro objeto

Com base na solução sugerida no Scribus Wiki :

  1. Coloque o quadro de texto com outro objeto (por exemplo, outro quadro de texto).
  2. Selecione o quadro interno e o quadro externo juntos nessa ordem (usando a tecla Shift).
  3. Abra a janela Alinhar e distribuir .
  4. Definir Relativo a para selecionada por último .
  5. Clique em Centralizar no eixo horizontal .

Desvantagens:

  • É impreciso porque o texto não está alinhado verticalmente dentro do quadro de texto interno.
  • Você precisará refazê-lo sempre que fizer uma alteração que altere o alinhamento.

Use um script

  1. Use este script do Scribus Wiki.

Eu pessoalmente não tentei essa opção, portanto não posso confirmar a eficácia dela. A partir da descrição, parece resolver a maioria das desvantagens dos outros dois métodos, deixando apenas um:

  • Você precisará refazê-lo sempre que fizer uma alteração que altere o alinhamento.

0

Apenas uma observação para a resposta aceita por Kyll: 1.5.4 não está no ramo estável, mas é uma versão de desenvolvimento. Isso pode ser interessante quando alguém se pergunta depois de instalar o 1.4.8 (mais recente estável). No entanto, ele realmente funciona, uma agradável melhoria da equipe de desenvolvimento.


Oi @ tzs, obrigado. Isso parece representar um comentário melhor deixado na resposta de Kyll do que como uma resposta independente. Se você estiver disposto e capacitado, considere transferir esta resposta para um comentário? Obrigado novamente.
iokevins 23/09

Olá iokevins, não pude adicionar um comentário por causa da reputação (?) Eu experimento agora.
tzs 25/09
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.