स्क्रिप्स - एक पाठ फ़्रेम के भीतर लंबवत रूप से संरेखित पाठ


6

मैं स्क्रिब्स टेक्स्ट फ़्रेम के भीतर पाठ को लंबवत रूप से कैसे संरेखित करूं?


स्पष्ट करने के लिए: मेरे पास 55.0 pt पाठ (फॉन्ट सेंचुरी स्कूलबुक रेगुलर) की एक पंक्ति के साथ उच्च टेक्स्ट फ़्रेम में विस्तृत x 0.9810 में 7.4590 है। डिस्क्रिप्शन, डिफ़ॉल्ट रूप से, टेक्स्ट को टेक्स्ट फ़्रेम के ऊपरी-बाएँ कोने में रखता है। पाठ लगभग 0.5, पाठ फ़्रेम के लंबवत रूप से खाता है। मैं जानना चाहता हूं कि कैसे (यदि संभव हो) मैं पाठ को पाठ फ्रेम के भीतर खड़ी कर सकता हूं ताकि यह पाठ के ऊपर और नीचे लगभग 0.25 सफेद स्थान के साथ केंद्रित हो। यह आसानी से Microsoft प्रकाशक में पूरा किया गया है; सिर्फ यह देखना कि क्या मैं इसे स्क्रिप्स में कर सकता हूं।
इकोविंस 6

जवाबों:


2

स्क्रिप्स 1.5.4 का उपयोग करना:

  1. टेक्स्ट बॉक्स पर राइट-क्लिक करें और चुनें Text Properties;
  2. पर क्लिक करें Column & Text Distances;
  3. पहली पंक्ति में, Vertical Alignmentवांछित मान (उदाहरण के लिए Middle) में बदलें ।

पाठ गुण मेनू का स्क्रीनशॉट

स्क्रिप्ट, मैनुअल मार्जिन या काले जादू की कोई आवश्यकता नहीं है।


2

स्क्रिप्स 1.4.6 का उपयोग करते हुए, निम्नलिखित स्क्रिप्ट केंद्र (ऊर्ध्वाधर) में एलेसेंड्रो रिमोल्डी द्वारा एक पाठ फ़्रेम की सामग्री को संरेखित किया गया है, पाठ को एक पाठ फ़्रेम के भीतर लंबवत रूप से संरेखित करने में सक्षम था:

  • पंक्तियों और / या पहली पंक्ति ऑफसेट को बाद में बदलने पर भी स्वचालित रूप से ऐसा करना
  • और विभिन्न शैलियों के कई पैराग्राफ के साथ

यहां स्क्रिप्ट है (यदि आवश्यक हो, तो स्क्रिप्ट का उपयोग करने का एक संक्षिप्त निर्देश कोड की इन पंक्तियों का अनुसरण करता है):

#!/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. प्रेस ठीक है

चयनित पाठ फ़्रेम के अंदर का पाठ तब लंबवत केंद्रित होगा।

मैं इस स्क्रिप्ट के साथ कम से कम दो कमियां अनुभव कर सकता हूं :

  • यदि स्क्रिप्ट की ऊंचाई या चौड़ाई को संशोधित किया गया है, तो इसे फिर से लिखना आवश्यक है
  • यह पाठ को केन्द्रित नहीं कर सकता है यदि यह अतिप्रवाहित है क्योंकि यह किसी प्रकार का शीर्ष और निचला मार्जिन बनाता है (इसलिए शायद बड़े पाठों के लिए आदर्श नहीं है)

यह स्क्रिप्ट इस तथ्य पर काबू पाती है कि जॉन बेंटले के उत्तर में वर्णित स्क्रिप्ट मेरे लिए काम नहीं करती थी ( स्क्रिप्स 1.4.6 कम से कम), निम्न पंक्ति के साथ एक त्रुटि संदेश दिखा:

ValueError: सीमा से बाहर पाठ की दूरी, सकारात्मक होनी चाहिए।

जो शायद स्क्रिप्ट से अधिक दस्तावेज़ से संबंधित है।


1

टेक्स्ट फ़्रेम का चयन करें और F2 या राइट-क्लिक करें और गुण चुनें। फिर शेप सेक्शन को चुनें। वहां आप टेक्स्ट फ़्रेम के किनारे से एक लेफ्ट मार्जिन ऑफसेट सेट कर सकते हैं जो टेक्स्ट को फ्रेम में संरेखित करेगा। आप टैब और कॉलम भी सेट कर सकते हैं यदि यह आपके लक्ष्य के अनुरूप है।


धन्यवाद W_Whalley - बाएं मार्जिन को टकराकर क्षैतिज ऑफसेट समायोजित करता है, हालांकि। : ओ) शीर्ष मार्जिन को उछालना काम करने लगता है, लेकिन स्क्रिब्स में पाठ लगभग तुरंत दृश्य से गायब हो जाता है, भले ही यह पाठ फ़्रेम की निचली सीमा के पास कहीं भी नहीं है ....
iokevins

@schultkl, स्पष्टीकरण के लिए धन्यवाद। आपके टेक्स्ट फ़्रेम साइज़ और 54 pt फॉन्ट का उपयोग करते हुए, मैंने टेक्स्ट ऑफसेट को कैरेक्टर की बेसलाइन को -20% तक सेट कर दिया और लगभग टेक्स्ट को फ्रेम में केंद्रित कर दिया। टेक्स्ट बॉक्स की ऊँचाई को 1 इंच तक बढ़ाना मुझे 55 pt फ़ॉन्ट के साथ करने देता है। टेक्स्ट फ़्रेम की ऊंचाई बढ़ाना कोई समस्या नहीं है क्योंकि टेक्स्ट फ़्रेम ओवरलैप हो सकते हैं।
W_Whalley

1

आश्चर्यजनक रूप से इस तरह की एक सरल और सामान्य सुविधा के लिए, संस्करण 1.4.5 के रूप में स्क्रिप्स में इसके लिए कोई विकल्प नहीं दिखता है। यहां तीन वर्कअराउंड (जिनमें से कोई भी आदर्श समाधान दुर्भाग्य से हैं), जिनमें से एक @ W_Whalley के उत्तर पर आधारित है (जो कि स्क्रिप्स की वर्तमान UI के लिए पुराना है):

मैन्युअल रूप से पाठ फ़्रेम के भीतर रिक्ति सेट करें

@ W_Whalley के उत्तर से अनुकूलित:

  1. पाठ फ़्रेम के लिए गुण खोलें (चयन करें और F2 दबाएं, या राइट क्लिक करें और गुण चुनें)।
  2. का चयन करें पाठ टैब।
  3. कॉलम और टेक्स्ट डिस्टेंस ड्रॉप-डाउन खोलें ।
  4. वांछित संरेखण प्राप्त करने के लिए मार्जिन समायोजित करें।

नुकसान:

  • आपको हाशिये पर काम करना होगा।
  • यह केवल एक सन्निकटन के रूप में परिणाम देगा जब तक कि आप हाशिये की गणना करने के लिए कड़ी मेहनत न करें।
  • हर बार जब आप संरेखण को बदल देते हैं, तो आपको इसे फिर से करना होगा।

किसी अन्य ऑब्जेक्ट के भीतर ही टेक्स्ट फ़्रेम संरेखित करें

स्क्रिप्स विकी पर सुझाए गए समाधान के आधार पर :

  1. किसी अन्य ऑब्जेक्ट (जैसे कोई अन्य टेक्स्ट फ़्रेम) के साथ टेक्स्ट फ़्रेम को घेरें।
  2. उस क्रम में एक साथ आंतरिक फ्रेम और बाहरी फ्रेम का चयन करें (शिफ्ट की का उपयोग करके)।
  3. खोलें संरेखित और वितरित करें खिड़की।
  4. सेट के सापेक्ष के लिए चयनित पिछले
  5. क्षैतिज अक्ष पर केंद्र पर क्लिक करें ।

नुकसान:

  • आंतरिक पाठ फ़्रेम में पाठ के लंबवत रूप से संरेखित नहीं होने के कारण यह अभेद्य है।
  • हर बार जब आप संरेखण को बदल देते हैं, तो आपको इसे फिर से करना होगा।

एक स्क्रिप्ट का उपयोग करें

  1. स्क्रिब्स विकी से इस स्क्रिप्ट का उपयोग करें ।

मैंने व्यक्तिगत रूप से इस विकल्प की कोशिश नहीं की है इसलिए यह पुष्टि नहीं कर सकता है कि यह कितना प्रभावी है। वर्णन से यह सिर्फ एक को छोड़कर अन्य दो विधियों के अधिकांश नुकसानों को हल करने के लिए प्रकट होगा:

  • हर बार जब आप संरेखण को बदल देते हैं, तो आपको इसे फिर से करना होगा।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.