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:
Clique com o botão direito do mouse em uma caixa de texto e selecione Text Properties;
Clique em Column & Text Distances;
Na primeira linha, altere Vertical Alignmentpara o valor desejado (por exemplo Middle).
Não há necessidade de scripts, margens manuais ou magia negra.
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:
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;
salve o documento como um arquivo .py , chamando-o como o nome desejado;
no Scribus, selecione o quadro de texto ;
vá para Script (ao lado de Extras) no menu principal na parte superior e selecione Executar scripts ... ;
uma janela Executar Script é exibida na qual você seleciona o arquivo .py que você criou;
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.
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:
Abra Propriedades para o quadro de texto (selecione e pressione F2 ou clique com o botão direito do mouse e selecione Propriedades).
Selecione a guia Texto .
Abra o menu suspenso Colunas e distâncias do texto .
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.
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.
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.
Respostas:
Usando o Scribus 1.5.4:
Text Properties
;Column & Text Distances
;Vertical Alignment
para o valor desejado (por exemploMiddle
).Não há necessidade de scripts, margens manuais ou magia negra.
fonte
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:
Aqui está o script (se necessário, uma breve instrução sobre como usar o script segue estas linhas de código):
Aqui está como usar o script:
O texto dentro do quadro de texto selecionado será então centralizado verticalmente.
Eu poderia experimentar pelo menos duas desvantagens com este script:
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:
que talvez esteja relacionado mais ao documento do que ao próprio script.
fonte
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.
fonte
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:
Desvantagens:
Alinhar o próprio quadro de texto em outro objeto
Com base na solução sugerida no Scribus Wiki :
Desvantagens:
Use um script
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:
fonte
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.
fonte