web-dev-qa-db-ja.com

Scribus-テキストフレーム内でテキストを垂直方向に整列

Scribusテキストフレーム内でテキストを垂直方向に揃えるにはどうすればよいですか?

6
iokevins

Scribus 1.5.4の使用:

  1. テキストボックスを右クリックして、Text Propertiesを選択します。
  2. Column & Text Distancesをクリックします。
  3. 最初の行で、Vertical Alignmentを目的の値(たとえば、Middle)に変更します。

Screenshot of the Text Properties menu

スクリプト、手動マージン、または黒魔術は必要ありません。

2
Kyll

Scribus 1.4.6を使用して、次のスクリプト テキストフレームのコンテンツを中央(垂直)に揃える by Alessandro Rimoldiは、テキストフレーム内のテキストを垂直に揃えることができました。

  • 後で行間隔や最初の行オフセットが変更された場合でも、自動的にそうします
  • 異なるスタイルの複数の段落があります

スクリプトは次のとおりです(必要に応じて、スクリプトの使用方法に関する簡単な説明は、次のコード行の後に続きます)。

#!/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);

スクリプトの使用方法は次のとおりです。

  1. スクリプトをコピーしてテキストドキュメントに貼り付けます(たとえば、ブロックメモやメモ帳を使用)。ドキュメントにスタイルフォーマットは適用されません。
  2. ドキュメントを。pyファイルとして保存し、任意の名前で呼び出します。
  3. scribusでは、テキストフレームを選択します;
  4. 上部のメインメニューの[スクリプト(エクストラの横)]に移動し、[スクリプトの実行...]を選択します。 ;
  5. スクリプトの実行ウィンドウが表示され、作成した.pyファイルを選択します。
  6. [〜#〜] ok [〜#〜]を押します。

選択したテキストフレーム内のテキストは、垂直方向の中央に配置されます。

このスクリプトでは、少なくとも2つの欠点が発生する可能性があります。

  • テキストフレームの高さまたは幅が変更されている場合は、スクリプトを再実行する必要があります
  • ある種の上下の余白が作成されるため、オーバーフローしている場合はテキストを中央に配置できません(したがって、大きなテキストには理想的ではない可能性があります)

このスクリプトは、 Jon Bentleyの回答 で言及されているスクリプトが(少なくともScribus 1.4.6では)機能せず、次の行のエラーメッセージを表示するという事実を克服します。

ValueError:テキストの距離が範囲外です。正である必要があります。

これは、スクリプト自体よりもドキュメントに関連している可能性があります。

2
VOST

テキストフレームを選択してF2キーを押すか、右クリックしてプロパティを選択します。次に、[形状]セクションを選択します。そこで、フレーム内のテキストを整列させるテキストフレームのエッジからの左マージンオフセットを設定できます。目標に沿っている場合は、タブと列を設定することもできます。

1
W_Whalley

驚くべきことに、このような単純で一般的な機能については、バージョン1.4.5の時点でScribusにこのオプションがないようです。これが3つの回避策です(残念ながら、どれも理想的な解決策ではありません)。そのうちの1つは、@ W_Whalleyの回答(Scribusの現在のUIでは古くなっています)に基づいています。

テキストフレーム内の間隔を手動で設定する

@W_Whalleyの回答から適応:

  1. テキストフレームのプロパティを開きます(F2を選択して押すか、右クリックして[プロパティ]を選択します)。
  2. Textタブを選択します。
  3. 列とテキストの距離ドロップダウンを開きます。
  4. 余白を調整して、目的の位置合わせを実現します。

短所:

  • マージンは手動で計算する必要があります。
  • マージンを計算するために一生懸命努力しない限り、それは概算になります。
  • 配置を変更する変更を加えるたびに、それをやり直す必要があります。

テキストフレーム自体を別のオブジェクト内に配置します

ScribusWikiで推奨される解決策 に基づく:

  1. テキストフレームを別のオブジェクト(別のテキストフレームなど)で囲みます。
  2. 内側のフレームと外側のフレームをこの順序で一緒に選択します(Shiftキーを使用)。
  3. Align and Distributeウィンドウを開きます。
  4. Relative totoLast Selectedに設定します。
  5. 横軸の中心をクリックします。

短所:

  • テキストが内側のテキストフレーム内で垂直方向に整列されていないため、不正確です。
  • 配置を変更する変更を加えるたびに、それをやり直す必要があります。

スクリプトを使用する

  1. ScribusWikiの このスクリプト を使用してください。

私は個人的にこのオプションを試したことがないので、それがどれほど効果的であるかを確認することはできません。説明から、他の2つの方法の欠点のほとんどを解決し、1つだけを残しているように見えます。

  • 配置を変更する変更を加えるたびに、それをやり直す必要があります。
1
Jon Bentley