एक शब्द में एक डैश शामिल करने के लिए मुझे LaTeX कैसे मिलेगा?


107

एक लेटेक्स दस्तावेज़ में मैं लिख रहा हूं, मुझे "मल्टी-डिसिप्लिनरी" शब्द की वजह से एक ओवरफ्लो होबॉक्स चेतावनी मिलती है , जो एक पंक्ति के अंत में प्रदान की जाती है।

मैं इसे बदलकर इस विशेष चेतावनी से छुटकारा पा सकता हूं multi-discipli\-nary, लेकिन वही समस्या कहीं और होगी, क्योंकि यह शब्द कागज में बहुत अधिक उपयोग किया जाता है।

मैं \hyphenation{}इसके बजाय कमांड का उपयोग करना चाहता हूं , लेकिन जाहिर है कि मेरा अस्थायी \hyphenation{multi-disci-pli-na-ry}काम नहीं करता है, क्योंकि यह पहले डैश को सही ढंग से नहीं समझता है।

जिस शब्द में पहले से ही एक डैश है, उसे सही इंडेंटेशन प्राप्त करने के लिए मुझे किस झुकाव की आवश्यकता है?

बोनस प्रश्न: मुझे स्वयं उस प्रश्न का उत्तर कहां से मिल सकता है?


कठोर हाइप पर शब्द को तोड़ना एक समस्या क्यों है? "मल्टी- newline आयामी" ठीक नहीं है?
ज्योफ

1
बोनस उत्तर: "लेटेक्स हाइफ़नेशन" की एक Google खोज ने लेटेक्स विकी बुक सहित सभी प्रकार के उपयोगी परिणाम प्राप्त किए, जिसमें उत्तर है: en.wikibooks.org/wiki/LaTeX/Formatn#Hyphenation
मीका

3
@ मिका: नहीं, यह नहीं है। मैंने उन सभी पृष्ठों को वर्षों पहले पढ़ा है। @geoff: यह ठीक होगा, वास्तव में, अगर लेटेक्स ने वहां हाइफ़न किया। लेकिन इस उदाहरण में यह एक "अंडरफ़्लो hbox" का कारण होगा, और लेटेक्स चुनता है कि वह हाइफ़न न करे।
17

क्या आप पहले - the \ hyphenation कमांड में बैकस्लैश कर सकते हैं?
ब्रायन पोस्टो

1
आपकी टिप्पणी @DrewSteen के लिए धन्यवाद। जाहिर है मैं सहमत हूं। लेकिन मेरे बचाव में टेक्स के रूप में ऐसी कोई बात नहीं थी। जब मैंने यह सवाल पूछा तो वापस आ गया :-)
गयूम

जवाबों:


52

से https://texfaq.org/FAQ-nohyph :

TeX उस शब्द को हाइफ़न नहीं करेगा जो पहले से ही हाइफ़न किया गया है। उदाहरण के लिए, (कैरिकेचर) अंग्रेजी उपनाम स्मिथ-पोस्टलेथवेट हाइफ़ननेट नहीं होगा, जो परेशानी पैदा कर सकता है। यह सही अंग्रेजी टाइपसेटिंग शैली है (यह अन्य भाषाओं के लिए सही नहीं हो सकती है), लेकिन यदि आवश्यक हो, तो आप हाइफन को \hyph कमांड के साथ नाम में बदल सकते हैं , परिभाषित

 \def\hyph{-\penalty0\hskip0pt\relax}

यह इस प्रकार की बात नहीं है जिसे सामान्य तौर पर FAQ अक्सर सुझाता है ... hyphenatपैकेज ऐसे आदेशों के एक बंडल को परिभाषित करता है (विभिन्न विराम चिह्नों पर हाइफ़नेशन बिंदुओं को शुरू करने के लिए)।


या आप \newcommandएक कमांड दे सकते multi-discipli\-naryहैं जो मौजूदा शब्दों को बदलने के लिए (सर्च + रिप्लेसमेंट ऑल का उपयोग करें) का विस्तार करता है।


बहुत बहुत धन्यवाद। जैसा कि मुझे संदेह था, कोई "सही" उत्तर नहीं है। क्योंकि मैं उस दस्तावेज़ का एकमात्र लेखक नहीं हूं, इसलिए मैं वास्तव में दूसरों को \newcommandहर जगह उपयोग करने के लिए मजबूर नहीं करना चाहता (इसीलिए मैं इसके आधार पर कुछ चाह रहा था \hyphenation)। मुझे लगता है कि मैं डिफ़ॉल्ट रूप से इसे '' जैसा '' रखता हूं, और लेटेक्स ओवरफ्लो बॉक्स के बारे में शिकायत होने पर मैन्युअल रूप से स्पष्ट हाइफ़न जोड़ें।
जियोम

63

समस्या (केनीटीएम के रूप में उल्लेख किया गया है) कि लाटेक्स उन में डैश के साथ शब्दों को हाइफ़न नहीं करेगा। सौभाग्य से, एक मानक पैकेज (ncctools का हिस्सा) है जो उस समस्या को संबोधित करता है, जिसे कहा जाता है extdash। यह नए हाइफ़न और डैश कमांड्स को परिभाषित करता है जो हाइफ़न को बाधित नहीं करते हैं, और जो हाइफ़न / डैश पर लाइन ब्रेक की अनुमति या रोकथाम कर सकते हैं। मैं shortcutsविकल्प के साथ इसका उपयोग करना पसंद करता हूं , इसलिए मैं \-/इसके बजाय इसका उपयोग कर सकता हूं \Hyphdash। यहाँ आप क्या चाहते हैं:

\usepackage[shortcuts]{extdash} ... multi\-/disciplinary

उस हाइफन को तोड़ने से रोकने के लिए, उपयोग करें multi\=/disciplinary

(असाइड: द शिकागो मैनुअल ऑफ स्टाइल सलाह देता है कि हाइफ़न को 'मल्टी' की तरह चिपकाएं, जब तक कि शब्द इसके बिना अस्पष्ट या अनजाने में न हो।)


यह बहुत अच्छा है, लेकिन जब मैं इसे एक अध्याय स्ट्रिंग में उपयोग करता हूं, तो यह हाइपरएर्फिक चेतावनी देता है Package hyperref Warning: Token not allowed in a PDF string:। वहां, अन्य प्रस्तावित समाधान ( \def\hyph{-\penalty0\hskip0pt\relax}) काम करता है।
डॉ। जन-फिलिप गेर्के

1
@ Jan-PhilipGehrcke: उन चेतावनियों का उपयोग करके भी तय किया जा सकता है \texorpdfstring(जो अध्याय के शीर्षक में जाने वाले तार के लिए सशर्त संकलन प्रदान करता है)। मैं शब्दार्थ मैक्रोज़ (यहां, शायद \multidisciplinary) के अंदर उपयोग छिपाता हूं । हां, यह सही नहीं है।
ब्लेसरॉब्लेड

22

मैं पैकेज का उपयोग करता हूं hyphenatऔर फिर फिनिश शब्द इंटरनेट- yhteys (Eng। इंटरनेट कनेक्शन ) के रूप में लिखता हूंInternet\hyp yhteys । नासमझ लगता है, लेकिन मुझे लगता है सबसे सुंदर तरीका है।


6

multi-disciplinarykennytm द्वारा समझाया गया, हाइफ़न नहीं होगा। लेकिन multi-\-disciplinaryएक ही हाइफ़नेशन अवसर है जो multidisciplinaryहै।

मैं मानता हूं कि मुझे नहीं पता कि यह क्यों काम करता है। यह यहाँ वर्णित व्यवहार से अलग है (मेरा जोर):

आदेश \-एक शब्द में एक विवेकाधीन हाइफ़न सम्मिलित करता है। यह एकमात्र बिंदु बन जाता है जहां इस शब्द में हाइफ़नेशन की अनुमति है


के -साथ -\-बदलने से आउटपुट नहीं बदलता है, कम से कम overleaf.com में डिफ़ॉल्ट सेटिंग्स के साथ (शायद pdflatex, लेकिन ओवरलीफ़ वास्तव में नहीं कहता है)।
केमिली गौडेय्यून

4

मुझे भी यही समस्या थी। मैं हाइफ़नट का उपयोग करता हूं और साथ ही निम्नलिखित मैक्रो:

\RequirePackage{hyphenat}
\RequirePackage{expl3}


% The following defs make sure words that contain an explicit `-` (hyphen) are still hyphenated the normal way, and double- and triple hyphens keep working the way they should. Just don't use a `-` as the last token of your document. Also note that `-` is now a macro that is not fully expandable

\ExplSyntaxOn

% latex2e doesn't like commands starting with 'end', apparently expl3 doesn't have any problems with it
\cs_new:Npn \hyphenfix_emdash:c {---}
\cs_new:Npn \hyphenfix_endash:c {--}

\cs_new:Npn \hyphenfix_discardnext:NN #1#2{#1}


\catcode`\-=\active

\cs_new_protected:Npn -{
    \futurelet\hyphenfix_nexttok\hyphenfix_i:w
}

\cs_new:Npn \hyphenfix_i:w {
    \cs_if_eq:NNTF{\hyphenfix_nexttok}{-}{
        %discard the next `-` token
        \hyphenfix_discardnext:NN{\futurelet\hyphenfix_nexttok\hyphenfix_ii:w}
    }{
        % from package hyphenat
        \hyp
    }
}

\cs_new:Npn \hyphenfix_ii:w {
    \cs_if_eq:NNTF{\hyphenfix_nexttok}{-}{
        \hyphenfix_discardnext:NN{\hyphenfix_emdash:c}
    }{
        \hyphenfix_endash:c
    }
}


\ExplSyntaxOff

ध्यान दें कि यह लेटेक्स 3 से एक्सप्लोस 3 पैकेज का उपयोग करता है।

यह -एक सक्रिय चरित्र बनाता है जो यह देखने के लिए आगे स्कैन करता है कि क्या यह अधिक डैश के बाद है। यदि हां, तो यह -सुनिश्चित करने --और ---काम करने के लिए एक रहता है । यदि नहीं, तो यह \hypहाइफ़नट से कमांड बन जाता है , जिससे बाकी के शब्दों में शब्द टूट जाता है। यह एक सामान्य समाधान है जो उन सभी शब्दों को बनाता है जिनमें सामान्य रूप से स्पष्ट हाइफ़न शामिल हैं।

ध्यान दें कि -एक मैक्रो बन जाता है जो पूरी तरह से विस्तार योग्य नहीं है, इसलिए अन्य पैकेजों को लोड करने के बाद इसे शामिल करने का प्रयास करें -जो मैक्रो होने की उम्मीद नहीं कर सकते हैं

संपादित करें: यह मेरा दूसरा संस्करण है, जब एक हाइफ़न {या }उसके बाद पहला संस्करण कम मजबूत था । यह एक नहीं है, लेकिन -इस संस्करण में पहले संस्करण के विपरीत पूरी तरह से विस्तार योग्य नहीं है।


3
multi\hskip0pt-\hskip0pt disciplinary

आप जैसे को परिभाषित कर सकते हैं

\def\:{\hskip0pt}

और फिर लिखें

multi\:-\:disciplinary

ध्यान दें कि बाबेल रूसी भाषा पैकेज में डैश का अपना सेट है जो "~उदाहरण के लिए हाइफ़नेशन, (डबल कोटेशन + टिल्ड) को प्रतिबंधित नहीं करता है ।


1
होना चाहिए multi-\hskip0pt disciplinary। आप की तरह MWE में, यह बहुत अधिक सम्मोहन करेगा। बस \setlength{\textwidth}{0.1cm}कोशिश करने के लिए निर्धारित किया है।
LaRiFaRi

-3

मैंने कुछ इसी तरह का उत्तर दिया: लाटेक्स ने बहुत सारे शब्दों को तोड़ दिया

मैंने कहा:

आपको अपनी प्रस्तावना में कहीं एक हाइफ़नेशन जुर्माना लगाना चाहिए:

\hyphenpenalty=750

750 का मूल्य 12 पीटी फ़ॉन्ट के साथ पत्र कागज (8.5x11 इंच) पर दो कॉलम लेआउट के लिए मेरी आवश्यकताओं के अनुकूल है। अपनी आवश्यकताओं के अनुरूप मूल्य समायोजित करें। संख्या जितनी अधिक होगी, उतनी कम हायफ़नेशन होगी। तुम भी हाइफ़नपैकटेज पर एक नज़र रखना चाहते हो सकता है, यह सिर्फ हाइफ़नेशन जुर्माना से थोड़ा अधिक प्रदान करता है


1
वह पूछ रहा है कि हाइफ़ेनटिंग से कैसे बचें, न कि सीमाओं को कैसे परिभाषित करें।
एंड्रास गियोम्रे

-4

पहले से ही हाइफ़न शब्द में हाइफ़नेशन से बचने के लिए मैंने ~पिछड़े स्थान के साथ संयोजन में गैर-ब्रेकिंग स्पेस का उपयोग किया \!। उदाहरण के लिए, कमांड

3~\!\!\!\!-~\!\!\!D

पाठ में उपयोग किया जाता है, शब्द 3-डी में स्वच्छता को दबाएं। शायद सबसे अच्छा समाधान नहीं है, लेकिन यह मेरे लिए काम किया!


4
यह जो पूछा गया था, उसके विपरीत प्रश्न का उत्तर दे रहा है । इसके अलावा, जिस व्यक्ति ने आपके पोस्ट को इंगित करने के लिए संपादित करने का प्रयास किया, उसने कहा कि आपके द्वारा किए गए कार्य को करने का एक बेहतर तरीका है \mbox{3-D}:।
zwol
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.