Scribus - จัดแนวข้อความในแนวตั้งภายในกรอบข้อความ


6

ฉันจะจัดแนวข้อความในแนวตั้งภายในกรอบข้อความ Scribus ได้อย่างไร


เพื่อชี้แจง: ฉันมี 7.4590 ในหน้ากว้าง x 0.9810 ในกรอบข้อความสูงที่มีบรรทัดหนึ่งบรรทัดที่ 55.0 pt text (แบบอักษร Century Schoolbook Regular) ตามค่าเริ่มต้น Scribus จะวางข้อความไว้ที่มุมบนซ้ายของกรอบข้อความ ข้อความใช้ประมาณ 0.5 นิ้วของกรอบข้อความในแนวตั้ง ฉันต้องการทราบว่า (ถ้าเป็นไปได้) ฉันสามารถจัดแนวข้อความในแนวตั้งภายในกรอบข้อความได้อย่างไรจึงอยู่กึ่งกลางโดยมีพื้นที่สีขาวประมาณ 0.25 ขึ้นไปด้านบนและด้านล่างของข้อความ สิ่งนี้สามารถทำได้อย่างง่ายดายใน Microsoft Publisher แค่เห็นว่าฉันสามารถทำได้ใน Scribus
iokevins

คำตอบ:


2

ใช้ Scribus 1.5.4:

  1. คลิกขวาที่กล่องข้อความแล้วเลือกText Properties;
  2. คลิกที่Column & Text Distances;
  3. ในบรรทัดแรกเปลี่ยนVertical Alignmentเป็นค่าที่ต้องการ (ตัวอย่างMiddle)

สกรีนช็อตของเมนูคุณสมบัติข้อความ

ไม่จำเป็นต้องใช้สคริปต์ขอบมือหรือเวทมนต์ดำ


2

การใช้ Scribus 1.4.6 ศูนย์สคริปต์ต่อไปนี้(แนวตั้ง) จัดเรียงเนื้อหาของกรอบข้อความโดย 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. ไปที่ Script (ถัดจาก Extras) ในเมนูหลักที่ด้านบนจากนั้นเลือกExecute Scripts ... ;
  5. เรียกใช้สคริปต์หน้าต่างปรากฏในที่ที่คุณเลือกไฟล์ .py คุณได้สร้าง;
  6. กดตกลง

ข้อความภายในกรอบข้อความที่เลือกจะถูกจัดกึ่งกลางแนวตั้ง

ฉันสามารถพบข้อบกพร่องอย่างน้อยสองครั้งด้วยสคริปต์นี้:

  • จำเป็นต้องเรียกใช้สคริปต์อีกครั้งหากความสูงหรือความกว้างของกรอบข้อความได้รับการแก้ไข
  • ไม่สามารถจัดกึ่งกลางข้อความได้หากมีการล้นเนื่องจากสร้างขอบบนและล่างบางส่วน (ดังนั้นอาจไม่เหมาะสำหรับข้อความขนาดใหญ่)

สคริปต์นี้เอาชนะความจริงที่ว่าสคริปต์ที่กล่าวถึงในคำตอบของ Jon Bentleyไม่ได้ผลสำหรับฉัน (อย่างน้อยใน Scribus 1.4.6) แสดงข้อผิดพลาดด้วยบรรทัดต่อไปนี้:

ValueError: ข้อความที่อยู่นอกขอบเขตต้องเป็นค่าบวก

ซึ่งอาจเกี่ยวข้องกับเอกสารมากกว่าสคริปต์เอง


1

เลือกกรอบข้อความและกด F2 หรือคลิกขวาแล้วเลือกคุณสมบัติ จากนั้นเลือกส่วนรูปร่าง คุณสามารถตั้งค่าระยะเยื้องขอบซ้ายจากขอบของกรอบข้อความที่จะจัดแนวข้อความในกรอบ นอกจากนี้คุณยังสามารถตั้งค่าแท็บและคอลัมน์หากเป็นไปตามเป้าหมายของคุณ


ขอบคุณ W_Whalley - การชนขอบซ้ายจะปรับการชดเชยแนวนอน : o) ชนโน่นชนระยะขอบด้านบนดูเหมือนว่าจะทำงาน แต่ใน Scribus ข้อความที่เกือบจะในทันทีหายไปจากมุมมองแม้ว่ามันจะอยู่ตรงไหนใกล้พรมแดนด้านล่างของกรอบข้อความ ....
iokevins

@ schultkl ขอบคุณสำหรับการชี้แจง ใช้ขนาดกรอบข้อความของคุณและแบบอักษร 54 pt ฉันจะตั้งค่าออฟเซ็ตข้อความเป็นพื้นฐานของอักขระเป็น -20% และประมาณกึ่งกลางข้อความในกรอบ การเพิ่มความสูงกล่องข้อความถึง 1 นิ้วขอผมทำด้วยตัวอักษร 55 pt การเพิ่มความสูงของกรอบข้อความจะไม่มีปัญหาเนื่องจากกรอบข้อความสามารถซ้อนทับกันได้
W_Whalley

1

น่าแปลกสำหรับคุณสมบัติที่เรียบง่ายและทั่วไปดูเหมือนจะไม่มีตัวเลือกสำหรับสิ่งนี้ใน Scribus ในเวอร์ชั่น 1.4.5 ต่อไปนี้เป็นวิธีแก้ปัญหาสามประการ (ไม่มีวิธีแก้ปัญหาที่น่าเสียดาย) ซึ่งหนึ่งในนั้นขึ้นอยู่กับคำตอบของ @ W_Whalley (ซึ่งล้าสมัยสำหรับ UI ปัจจุบันของ Scribus):

ตั้งค่าระยะห่างภายในกรอบข้อความด้วยตนเอง

ดัดแปลงมาจากคำตอบของ @ W_Whalley:

  1. เปิดPropertiesสำหรับกรอบข้อความ (เลือกแล้วกด F2 หรือคลิกขวาแล้วเลือก Properties)
  2. เลือกแท็บข้อความ
  3. เปิดเมนูแบบหล่นลงของคอลัมน์และระยะข้อความ
  4. ปรับระยะขอบเพื่อให้ได้แนวที่ต้องการ

ข้อเสีย:

  • คุณจะต้องคำนวณระยะขอบด้วยตนเอง
  • มันจะส่งผลให้มีการประมาณเว้นแต่คุณจะทำงานหนักเพื่อคำนวณระยะขอบ
  • คุณจะต้องทำซ้ำทุกครั้งที่คุณทำการเปลี่ยนแปลงที่เปลี่ยนแปลงการจัดตำแหน่ง

จัดตำแหน่งกรอบข้อความภายในวัตถุอื่น

ขึ้นอยู่กับโซลูชันที่แนะนำบน Scribus Wiki :

  1. ล้อมกรอบข้อความด้วยวัตถุอื่น (เช่นกรอบข้อความอื่น)
  2. เลือกกรอบด้านในและกรอบด้านนอกเข้าด้วยกันตามลำดับ (โดยใช้ปุ่ม Shift)
  3. เปิดหน้าต่างจัดตำแหน่งและกระจาย
  4. ตั้งค่าเมื่อเทียบกับการเลือกล่าสุด
  5. คลิกCenter ได้ที่แกนนอน

ข้อเสีย:

  • มันไม่แน่ชัดเนื่องจากข้อความไม่ได้จัดแนวตั้งภายในกรอบข้อความด้านใน
  • คุณจะต้องทำซ้ำทุกครั้งที่คุณทำการเปลี่ยนแปลงที่เปลี่ยนแปลงการจัดตำแหน่ง

ใช้สคริปต์

  1. ใช้สคริปต์นี้จาก Scribus Wiki

ฉันไม่ได้ลองใช้ตัวเลือกนี้เป็นการส่วนตัวดังนั้นจึงไม่สามารถยืนยันได้ว่ามีประสิทธิภาพแค่ไหน จากคำอธิบายมันจะปรากฏขึ้นเพื่อแก้ไขข้อเสียส่วนใหญ่ของอีกสองวิธีที่เหลือเพียงวิธีเดียว:

  • คุณจะต้องทำซ้ำทุกครั้งที่คุณทำการเปลี่ยนแปลงที่เปลี่ยนแปลงการจัดตำแหน่ง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.