0 वोट
356 व्यूज़

क्या कोई तरीका है जिससे आप ग्रिड से बाहर निकलने के बाद वापस ग्रिड पर आ सकें? या क्या कोई टेक्स्ट ग्रिड से बाहर रखा जा सकता है, जबकि आप पृष्ठभूमि में ग्रिड की निगरानी कर रहे हों?

मेरी किताबों के पहले पृष्ठ इस प्रकार व्यवस्थित हैं:

MAIN TITLE
introductory outline (with \io markers)
\s
\p

समस्या \io अनुभाग के कारण उत्पन्न होती है। मैं चाहता/चाहती हूँ कि उस अनुभाग के लिए टेक्स्ट और लाइन स्पेसिंग सामान्य से छोटी हो, लेकिन अगर मैं ऐसा करता/करती हूँ, तो \s और \p ग्रिड पर नहीं होते। मैं इसे \vskip का उपयोग करके ठीक कर सकता/सकती हूँ, लेकिन चूंकि हर परिचय में लाइनों की संख्या अलग-अलग होती है, इसलिए हर किताब के लिए \vskip अलग होना चाहिए। (अब जब मैंने यह लिखा है, अगर ग्रिड पर वापस आने का कोई तरीका नहीं है, शायद मैं हर किताब के लिए एक परिवर्तन या sethook लिखकर समस्या को ठीक कर सकता/सकती हूँ।)

English से मशीन-अनुवादित
PTXprint में द्वारा (1.9k अंक) | 356 व्यूज़

2 उत्तर

0 वोट

बस… \parlines है, जिसे TeX उपयोग करता है यह बताने के लिए कि एक अनुच्छेद में कितनी लाइनें थीं।
मुझे लगता है कि अनुच्छेद के अंत का कोड कुछ गिनती और कुछ गणना कर सकता है…

English से मशीन-अनुवादित
द्वारा (1.1k अंक)

आह। माफ़ कीजिए, मेरी पिछली प्रतिक्रिया में दो बड़ी गलतियाँ थीं।

  1. \@parlines वह हिस्सा है जिसका उपयोग हम ड्रॉप्ड चैप्टर आदि की गणना करने के लिए करते हैं, मुझे शायद \prevgraf लिखना चाहिए था
  2. \prevgraph आपको लगभग बिल्कुल वही देता है जो आप चाहते हैं - ग्रिड से बाहर होने की मात्रा को उससे गुणा करें और जब तक कोई अन्य स्किप्स, पहले/बाद की जगह आदि न हो, तब तक आपके पास 'X pt से बाहर' होगा जिसे आप ग्रिड पर पुनर्स्थापित करने के लिए उपयोग कर सकते हैं, यह सुनिश्चित करने के बाद कि यह धनात्मक है और 1 ग्रिडलाइन से कम है। यह सब TeX के पहले चरण पर काम करेगा। लेकिन यहाँ एक बड़ा सावधानी का बिंदु है:
    यह तब तक ठीक है जब तक कि आपका पूर्ववर्ती ग्रिड-से-बाहर टेक्स्ट कभी पृष्ठ के बीच में विभाजित न हो। उस बिंदु पर, सभी सावधानीपूर्वक गणनाओं को त्याग देना होगा, क्योंकि पृष्ठ पर सभी टेक्स्ट 1st बेसलाइन से शुरू होता है। और @parlines प्रकार की प्रोसेसिंग के बिना आपको पता नहीं चलता कि टेक्स्ट के बीच में उस अनुच्छेद की कितनी लाइनें नए पृष्ठ पर हैं।

तो… थोड़ा और सोचने के बाद, मुझे ऐसा कोई तरीका नहीं सूझता जो पृष्ठ टूटने (page breaks) को शामिल करता हो, जब तक कि .parlocs फ़ाइल सीधे शामिल न हो, और उस बिंदु पर यह कहना आसान होगा 'मैं चाहता/चाहती हूँ कि यह अनुच्छेद (कर्सर वर्तमान में X,Y पर है) ग्रिड पर हो' और किसी भी अनुच्छेद की गिनती करने की परवाह न करें। कम से कम पहले संक्रमण के लिए।
फिर इसकी आवश्यकता होगी TeX का पुनर्चालन, अगर यह ग्रिड से बाहर है। इसका नुकसान यह है कि इससे पृष्ठ टूटने के बिंदु और आकृति/फुटनोट की स्थिति बदल सकती है, संभावित रूप से प्रत्येक संक्रमण के लिए >= एक पुनर्चालन! (अरे, अगर आप पूरी बाइबल के बारे में बात कर रहे हैं!)

English से मशीन-अनुवादित
0 वोट

मुझे लगता है कि यह बहुत सारे लोगों के लिए एक पर्याप्त सामान्य समस्या है, इसलिए हमें शायद परिचय समाप्त होने के बाद और 1st अध्याय शुरू होने पर टेक्स्ट को स्वतः ग्रिड पर वापस ला देना चाहिए। (क्या हम इसे प्रोग्रामेटिक रूप से कर सकते हैं ताकि उपयोगकर्ताओं को परेशान होने की आवश्यकता न हो?)

English से मशीन-अनुवादित
द्वारा (3.2k अंक)

मेरी बड़ी सावधानी लागू होती है, अगर हम चाहते हैं कि यह हर स्थिति में काम करे। चूंकि लोगों के पास बहु-पृष्ठ परिचय हो सकते हैं, मुझे लगता है कि हमें प्रभावी रूप से (a) हर अनुच्छेद को एक अनियमित स्पेसिंग के साथ संख्या देनी होगी, और इसके बाद के पृष्ठ भर के लिए भी, (b) गणना करनी होगी कि कौन सा अनुच्छेद टूटता है और अनुच्छेद में कितनी लाइनों तक टूट की गणना की गई थी। (c) अगले चरण के लिए याद रखना होगा, जब हम 'ग्रिड पुनर्स्थापित' पर पहुँचते हैं।

वैकल्पिक, वह है जो हम वर्तमान में एकल से डबल कॉलम में संक्रमण पर करते हैं: आंशिक रूप से भरा पृष्ठ टाइपसेट किया जाता है, ठोस हो जाता है, और अन्य सामग्री नीचे जोड़ी जाती है। यह 2 कॉलम मोड में अलग-अलग समस्याएं पैदा करता है, उदाहरण के लिए… संतुलन के साथ।

English से मशीन-अनुवादित

किसी भी दिए गए समय पर, क्या TeX को पता नहीं है कि वह पृष्ठ पर कहाँ है? क्या यह केवल ऊपर वाली लाइन के सापेक्ष धनात्मक होने को जानता है? मैं समझ नहीं पा रहा/पा रही कि कोई ऐसा तरीका क्यों नहीं है जो कह सके "अध्याय संख्या y-मान a पर होती है, अगली ग्रिड लाइन y-मान b पर है, और इसलिए हमें अध्याय बेसलाइन को नीचे b-a से खिसकाना होगा।

वैकल्पिक, वह है जो हम वर्तमान में एकल से डबल कॉलम में संक्रमण पर करते हैं: आंशिक रूप से भरा पृष्ठ टाइपसेट किया जाता है, ठोस हो जाता है, और अन्य सामग्री नीचे जोड़ी जाती है।

वास्तव में, उस परियोजना में जिसने यह प्रश्न उठाया, परिचय और मुख्य टेक्स्ट दोनों एकल कॉलम हैं। क्या यह कुछ ऐसा है जो मैं मैन्युअल रूप से कर सकता/सकती हूँ–पृष्ठ को बंद करके नीचे एक नया शुरू कर सकता/सकती हूँ?

English से मशीन-अनुवादित

TeX 'गैली' (अखंड अनुच्छेदों और स्पेसिंग का कॉलम) तैयार कर लेता है यह तय करने से पहले कि वह इसे पृष्ठों में कैसे काटेगा। यह हमेशा एक अनुच्छेद को पूरा करता है यह जाँचने से पहले कि गैली में सब कुछ जोड़कर एक पृष्ठ बनता है, और जबकि यह पृष्ठ-कटने को ट्रिगर करने के समय का एक उचित अनुमान लगाने की कोशिश करता है, वे अनुमान पूरी तरह सटीक नहीं होते: कॉलम संतुलन, फुटनोट, क्रॉस-रेफरेंस, आकृतियाँ और साइडबार और पृष्ठों के अंत की सुसंगति प्राप्त करने के लिए, हमें अक्सर गैली की छोटी कट-लंबाई आज़माने की आवश्यकता होती है। इस प्रकार, एक नया पृष्ठ शुरू होने पर इसकी गैली में टेक्स्ट, आकृतियों और फुटनोट का एक बड़ा ढेर हो सकता है।

जब एक अनुच्छेद शुरू होता है (वह बिंदु जिस पर आपको अतिरिक्त जगह जोड़नी होगी) \pagegoal और \pagetotal ज्ञात होते हैं, लेकिन वास्तव में, वे केवल अनुमान हैं, और प्रोग्राम को पता नहीं है उदाहरण के लिए कि पृष्ठ के ऊपर कौन सी तस्वीरें जोड़ी जा सकती हैं, या क्या कुछ भी लचीला है जिसे स्ट्रेच करने की कोई कॉल होगी।

हाँ, आंशिक पृष्ठ को बंद करने के लिए इसे संभव बनाना चाहिए, लेकिन शायद मैन्युअल रूप से नहीं। कुछ साइड इफेक्ट्स भी हो सकते हैं जो पूरी तरह से परेशानी भरे हो सकते हैं।
मुझे अभी-अभी एहसास हुआ कि एक अन्य विकल्प लचीली स्पेसिंग का उपयोग करना होगा, थोड़ा इस तरह:

Stretch to page height{
  {figures}
  Stretch to 35 normal lines{
    {Intro paragraph (13.4 normal lines)}
    {stretchy bit}
    {main text (21 lines)}
  }
  {stretchy bit}
  {footnotes}
}

(नया हिस्सा मध्य अनुभाग के लिए 'Stretch to 35 lines' है, और当然 '35 lines' की गणना टेक्स्ट रन की अनस्ट्रेच्ड लंबाई के आधार पर की जानी होगी।)
@Martin_Hosken शायद यह टिप्पणी करना चाहेंगे कि यह एक मूर्खतापूर्ण विचार क्यों है, हालाँकि।

English से मशीन-अनुवादित

ऑफलाइन डेविड ने \par\layoutstylebreak सुझाया। वह काम नहीं किया, लेकिन अन्य दस्तावेज़ों में इसका उपयोग कैसे किया जाता है, यह देखकर मैंने अंततः \singlecolumn आज़माया, और यह काम करता है!!! हालाँकि मैं एकल कॉलम से एकल कॉलम में स्विच कर रहा/रही हूँ, फिर भी ग्रिड रीसेट करने के लिए यह पर्याप्त लगता है।


उस समाधान ने एक और प्रश्न उठाया:

मेरा .sfm दस्तावेज़ अब इस तरह दिखता है

\io a bunch of introductory outline rows
\\p ~
\zgetbackongrid\*
\s The first section title

और मेरी *mods.text फ़ाइल में यह है:

\sethook{end}{zgetbackongrid}{\singlecolumn}

लेकिन, मैं इसे उस \\p ~ लाइन के बिना काम नहीं कर पा रहा/पा रही, जो फिर एक अतिरिक्त खाली लाइन जोड़ देती है जिसे मैं नहीं चाहता/चाहती। मैं मान रहा/रही हूँ कि समस्या यह है कि मेरा माइलस्टोन zgetbackongrid अभी भी \io अनुच्छेद के अंदर है, लेकिन मैं यह नहीं समझ पा रहा/पा रही कि अतिरिक्त लाइन जोड़े बिना उस अनुच्छेद से बाहर कैसे निकलूँ। \par जो डेविड ने मूल रूप से layoutstylebreak के साथ-साथ सुझाया था, sethook के भीतर अनुमत नहीं लगता है।

English से मशीन-अनुवादित

अगर \zgetbackongrid\* अन्यथा खाली माइलस्टोन है, तो आप पूरी तरह जा सकते हैं और आंतरिक रूप से चीज़ें करने के लिए इसे विस्तारित करने का प्रयास कर सकते हैं (कोई गारंटी नहीं, मैंने इसका परीक्षण नहीं किया है):

\expandafter\def\csname MS:zgetbackongrid\endcsname{\par\singlecolumn}

यह काम नहीं कर सकता। माइलस्टोन कोड की उम्मीद है कि यह (अधिकतम) कुछ कैरेक्टर-लेवल टेक्स्ट उत्पन्न करेगा, और स्टाइल सेटिंग्स आदि के बाहर न निकलने के लिए विभिन्न जटिल हिस्से हैं।

English से मशीन-अनुवादित

आपके कोड का उपयोग करने से \par से कोई त्रुटि नहीं आई, लेकिन यह भी ऐसा नहीं लगा जैसे ग्रिड रीसेट हो रहा हो जैसे .sfm फ़ाइल में \p का उपयोग करने से होता है।

हालाँकि, निम्नलिखित अंततः काम किया और इसलिए मुझे लगता है कि मैं अतिरिक्त स्पेस के बिना ग्रिड रीसेट कर सकता/सकती हूँ:
sfm फ़ाइल में \p ~ रखें।
*mods.tex फ़ाइल में, इसका उपयोग करें:
\sethook{end}{zgetbackongrid}{\vskip-1\baselineskip\singlecolumn}

आपकी सभी सहायता के लिए धन्यवाद।

English से मशीन-अनुवादित

कोई संबंधित प्रश्न नहीं मिला

Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
For where two or three gather in my name, there am I with them.
Matthew 18:20
3,046 प्रश्न
6,006 उत्तर
5,671 टिप्पणियाँ
2,027 उपयोगकर्ता