ExpressionScript कैसे करें
From LimeSurvey Manual
पहले समझाई गई बातों का अवलोकन
यदि आपने अब तक LimeSurvey मैन्युअल की संरचना का अनुसरण किया है, तो इसका अर्थ है कि आप LimeSurvey शब्दावली से पहले ही परिचित हैं। इसके बाद, हमने अपने सर्वेक्षणों को बेहतर बनाना सीखने के लिए एक्सप्रेशन और वैरिएबल को समझा। अगले भाग में, हमने सिंटैक्स की त्रुटियों को ठीक करना सीखने के लिए सिंटैक्स हाइलाइटिंग के प्रकारों और अर्थों को समझा।
इन बुनियादी अवधारणाओं को समझ लेने के बाद, अब हम उदाहरणों की ओर बढ़ सकते हैं और देख सकते हैं कि LimeSurvey में एक्सप्रेशन कैसे काम करते हैं।
सिंटैक्स हाइलाइटिंग
निम्नलिखित स्क्रीनशॉट उदाहरण देते हैं, लेकिन टूलटिप के मान नहीं दिखाते। टूलटिप एक सूचनात्मक बॉक्स है, जो किसी भी रंगीन बोल्ड शब्द पर माउस ले जाने पर दिखाई देता है।
इस सिंटैक्स हाइलाइटिंग के कारण सही एक्सप्रेशन लिखना, यहाँ तक कि जटिल एक्सप्रेशन लिखना भी, बहुत आसान हो जाता है। हालाँकि LimeSurvey टीम एक Expression Builder GUI बनाने की योजना बना रही है, फिर भी आप टाइपिंग की गलतियों को जल्दी पहचानने और ठीक करने के लिए मौजूदा सिंटैक्स-हाइलाइटिंग का उपयोग कर सकते हैं। आप अपने एक्सप्रेशन की सटीकता जाँचने के लिए भी टूलटिप का उपयोग कर सकते हैं (उदाहरण के लिए, इस बात की पुष्टि करें कि आपने इच्छित वैरिएबल चुने हैं)।
प्रत्येक उदाहरण में तीन कॉलम हैं:
- स्रोत (Source) - यह वह मूल टेक्स्ट है जिसे आप LimeSurvey के प्रश्न फ़ील्ड में दर्ज करेंगे
- प्रिटी प्रिंट (Pretty Print) - यह आपके दर्ज किए गए टेक्स्ट का सिंटैक्स-हाइलाइट किया हुआ रूप है
- ध्यान दें कि इस हाइलाइटिंग में एक्सप्रेशन भूरे-पीले (tan) बैकग्राउंड के साथ दिखाए जाते हैं, लेकिन कर्ली ब्रेसेस से घिरे नहीं होते।
- क्योंकि EM पुनरावर्ती प्रतिस्थापन (recursive substitution) का समर्थन करता है, हाइलाइटिंग में कर्ली ब्रेसेस दिखाने से सिंटैक्स त्रुटियाँ होंगी
- परिणाम (Result) - यह वह आउटपुट है जो EM द्वारा स्रोत को प्रोसेस करने पर बनता है
- जो कुछ भी सही ढंग से प्रतिस्थापित किया जा सकता है, वह प्रतिस्थापित किया जाता है
- त्रुटियों वाले एक्सप्रेशन सिंटैक्स हाइलाइटिंग के साथ इन-लाइन दिखाए जाते हैं। त्रुटियाँ लाल रेखा वाले बॉक्स से घिरी होती हैं।
सही सिंटैक्स
सही सिंटैक्स के उदाहरण नीचे दिए गए हैं:
- मान (Values): दिखाता है कि ज्ञात वैरिएबल को इस आधार पर रंग-कोडित किया जाता है कि वे वर्तमान पृष्ठ पर सेट हैं या नहीं।
- सवाल गुण: दिखाता है कि डॉट नोटेशन से प्रश्नों के कुछ गुणों तक पहुँचा जा सकता है
- गणित (Math): दिखाता है कि बुनियादी और जटिल गणनाएँ समर्थित हैं
- टेक्स्ट प्रोसेसिंग (TextProcessing): उपलब्ध टेक्स्ट-प्रोसेसिंग फ़ंक्शन में से कुछ दिखाता है
- तिथियाँ (Dates): उपलब्ध तिथि-संबंधी फ़ंक्शन में से दो दिखाता है
- सशर्त (Conditional): if() फ़ंक्शन का उपयोग दिखाता है। विकल्पों को नेस्ट किया जा सकता है।
- अनुकूलित अनुच्छेद (Tailored paragraph): आप पिछले मानों के आधार पर रिपोर्ट को पूरी तरह अनुकूलित कर सकते हैं
- EM स्ट्रिंग के भीतर प्रोसेस करता है: दिखाता है कि यह स्ट्रिंग के भीतर प्रतिस्थापन कर सकता है। यह उदाहरण एक अनुकूलित इमेज नाम बनाता है।
- EM इस तरह के कर्ली ब्रेसेस को प्रोसेस नहीं करता: दिखाता है कि यदि कर्ली ब्रेसेस को एस्केप किया गया है, या एक्सप्रेशन और कर्ली ब्रेसेस के बीच खाली स्थान है, तो ES उस एक्सप्रेशन को अनदेखा कर देता है।

त्रुटियों वाला EM सिंटैक्स
ES एक्सप्रेशन टाइप करते समय होने वाली आम त्रुटियों के उदाहरण यहाँ दिए गए हैं। ध्यान दें कि टूलटिप अतिरिक्त जानकारी प्रदान करते हैं।
- इनलाइन Javascript, जिसमें कर्ली ब्रेस के बाद स्पेस जोड़ना भूल गए
- क्योंकि "document.write" कर्ली ब्रेस के ठीक बाद आता है, EM इसे एक्सप्रेशन समझता है, और "document" तथा "write" को लाल बॉक्स में दिखाता है, क्योंकि वे क्रमशः अपरिभाषित वैरिएबल और फ़ंक्शन हैं
- अज्ञात/गलत वर्तनी वाले वैरिएबल, फ़ंक्शन और ऑपरेटर
- यहाँ हम भूल गए कि हम "sex" के बजाय वैरिएबल नाम "gender" का उपयोग कर रहे हैं, लेकिन EM इस त्रुटि को पकड़ लेता है। यह '++' को भी लाल बॉक्स में दिखाता है, क्योंकि यह समर्थित ऑपरेटर नहीं है।
- यदि eq के बजाय = का उपयोग किया जाए, या मान असाइन किए जाएँ, तो चेतावनी देता है
- ध्यान दें कि '=' और '+=' काले के बजाय लाल टेक्स्ट में हैं। यदि आप उन पर माउस ले जाएँ, तो आपको चेतावनी दिखाई देगी कि आप कोई मान असाइन कर रहे हैं।
- फ़ंक्शन के लिए आर्ग्युमेंट की गलत संख्या
- if() 3 आर्ग्युमेंट लेता है, लेकिन इसे 4 दिए गए हैं, इसलिए लाल बॉक्स वाले "if" पर माउस ले जाने से त्रुटि समझाई जाएगी और समर्थित सिंटैक्स दिखाया जाएगा
- sum() असीमित संख्या में आर्ग्युमेंट लेता है, लेकिन हमने समापन कोष्ठक से पहले अतिरिक्त अल्पविराम लगा दिया, इसलिए उसे लाल बॉक्स में दिखाया गया है
- कोष्ठकों का बेमेल होना
- एक्सप्रेशन लिखते समय यह सबसे आम त्रुटियों में से एक है।
- इसमें समापन कोष्ठक छूट जाने के दो उदाहरण और एक समापन कोष्ठक अधिक होने का एक उदाहरण दिखाया गया है।
- असमर्थित सिंटैक्स
- यदि आप ऐसे ऑपरेटर या विराम चिह्न का उपयोग करते हैं जिसे ES समर्थित नहीं करता, तो वह उसे लाल बॉक्स में दिखाएगा।
- अमान्य असाइनमेंट
- कुछ वैरिएबल readWrite होते हैं और उनके मान बदले जा सकते हैं। अन्य केवल-पढ़ने योग्य (read-only) होते हैं।
- यदि आप किसी read-only वैरिएबल का मान बदलने का प्रयास करते हैं, तो आप ऐसा नहीं कर सकते। EM उस प्रयास को लाल बॉक्स में दिखाएगा।
- यदि आप किसी समीकरण या स्ट्रिंग को मान असाइन करने का प्रयास करते हैं, तो भी आपको त्रुटि मिलेगी

सक्रिय टूलटिप के साथ सिंटैक्स हाइलाइटिंग के "लाइव" उदाहरण
| स्रोत | प्रिटी प्रिंट | परिणाम |
|---|---|---|
| टूलटिप के साथ सही सिंटैक्स का एक उदाहरण नमस्ते {if(gender=='M','Mr.','Mrs.')} {surname}, अभी {date('g:i a',time())} बजे हैं। क्या आप जानते हैं कि आपके {sum(numPets,numKids)} बच्चे और पालतू जानवर कहाँ हैं? | टूलटिप के साथ सही सिंटैक्स का एक उदाहरण नमस्ते if(gender == 'M','Mr.','Mrs.') surname, अभी date('g:i a',time()) बजे हैं। क्या आप जानते हैं कि आपके sum(numPets,numKids) बच्चे और पालतू जानवर कहाँ हैं? | टूलटिप के साथ सही सिंटैक्स का एक उदाहरण नमस्ते Mr. Smith, अभी 6:07 am बजे हैं। क्या आप जानते हैं कि आपके 3 बच्चे और पालतू जानवर कहाँ हैं? |
| यहाँ आम त्रुटियाँ दी गई हैं ताकि आप टूलटिप देख सकें घोषित किए जाने से पहले उपयोग किए गए वैरिएबल: {notSetYet} अज्ञात फ़ंक्शन: {iff(numPets>numKids,1,2)} अज्ञात वैरिएबल: {sum(age,num_pets,numKids)} गलत # पैरामीटर: {sprintf()},{if(1,2)},{date()} read-only वैरिएबल को असाइन करना:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'} असंतुलित कोष्ठक: {pow(3,4},{(pow(3,4)},{pow(3,4))} | यहाँ कुछ सामान्य त्रुटियाँ दी गई हैं, ताकि आप टूलटिप्स देख सकें घोषित किए जाने से पहले उपयोग किए गए वेरिएबल: notSetYet अज्ञात फ़ंक्शन: iff(numPets > numKids,1,2) अज्ञात वेरिएबल: sum(age,num_pets,numKids) पैरामीटर की गलत संख्या: sprintf(),if(1,2),date() केवल-पढ़ने योग्य वेरिएबल को मान असाइन करना:TOKEN:ATTRIBUTE_1+=10,name='Sally' असंतुलित कोष्ठक: pow(3,4,(pow(3,4),pow(3,4)) | यहाँ कुछ सामान्य त्रुटियाँ दी गई हैं, ताकि आप टूलटिप्स देख सकें घोषित किए जाने से पहले उपयोग किए गए वेरिएबल: notSetYet अज्ञात फ़ंक्शन: iff(numPets > numKids,1,2) अज्ञात वेरिएबल: sum(age,num_pets,numKids) पैरामीटर की गलत संख्या: sprintf(),if(1,2),date() केवल-पढ़ने योग्य वेरिएबल को मान असाइन करना:TOKEN:ATTRIBUTE_1+=10,name='Sally' असंतुलित कोष्ठक: pow(3,4,(pow(3,4),pow(3,4)) |
| यहाँ कुछ असमर्थित सिंटेक्स दिए गए हैं '++', '--', '%', ';' के लिए समर्थन नहीं है: {min(++age, --age,age % 2);} '|', '&', '^' के लिए भी नहीं: {(sum(2 | 3,3 & 4,5 ^ 6)}} ऐरे के लिए भी नहीं: {name[2], name['mine']} | यहाँ कुछ असमर्थित सिंटेक्स दिए गए हैं '++', '--', '%', ';' के लिए समर्थन नहीं है: min( ++ age, -- age,age % 2) ; '|', '&', '^' के लिए भी नहीं: (sum(2 | 3,3 & 4,5 ^ 6)} ऐरे के लिए भी नहीं: name [ 2 ] ,name [ 'mine' ] | यहाँ कुछ असमर्थित सिंटेक्स दिए गए हैं '++', '--', '%', ';' के लिए समर्थन नहीं है: min( ++ age, -- age,age % 2) ; '|', '&', '^' के लिए भी नहीं: (sum(2 | 3,3 & 4,5 ^ 6)} ऐरे के लिए भी नहीं: name [ 2 ] ,name [ 'mine' ] |
अनुकूलन (Tailoring) के उदाहरण
"प्रिय {Mr}/{Mrs} Smith..."
'Mr.' या 'Mrs.' में से कौन-सा प्रदर्शित करना है, यह शर्त के आधार पर चुनने के लिए if() फ़ंक्शन का उपयोग करें।
सिंटेक्स if(test,do_if_true,do_if_false) है।
| # | कोड | प्रश्न | प्रकार |
| 1 | gender | आपका लिंग क्या है? | लिंग |
| 2 | example1 | प्रिय {if(gender=='M','Mr.','Mrs.')} Smith, ... | लंबे मुफ़्त टेक्स्ट |

जैसा कि नीचे देखा जा सकता है, "Mr" और "Mrs" इस पर निर्भर करते हैं कि उत्तरदाता ने प्रश्न "gender" के उत्तर के रूप में क्या चुना है।

आमंत्रण ईमेल में "प्रिय {Mr}/{Mrs} Smith..."
आप टोकन तालिका की विशेषताओं का उपयोग करके उपरोक्त उदाहरण को आमंत्रण ईमेल में भी इस्तेमाल कर सकते हैं। ईमेल में 'Mr.' या 'Mrs.' में से किसका उपयोग करना है, यह चुनने के लिए if() फ़ंक्शन का उपयोग करें।
सिंटेक्स "if(test,do_if_true,do_if_false)" है।
| # | विशेषता | मान |
| 1 | अंतिम नाम | Smith |
| 2 | ईमेल पता | test@test.com |
| 3 | ATTRIBUTE_2 | M |
आमंत्रण ईमेल में टेक्स्ट:
Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},
you have been invited to participate in a survey:
https:/...

ईमेल देखें:

गणना / मूल्यांकन के उदाहरण
रनटाइम पर मूल्यांकन मान की गणना करें और परिणामों को सर्वेक्षण डेटा में सहेजें
इस उदाहरण में EM की सभी सुविधाओं का उपयोग किया गया है, जिनमें प्रासंगिकता, अनुकूलन (Tailoring) और समीकरण प्रश्न का प्रकार शामिल हैं।
यह भी दिखाता है कि ये सभी JavaScript-सक्षम हैं, इसलिए यदि किसी पृष्ठ पर ये सुविधाएँ हैं, तो लोगों द्वारा उत्तर देने और बदलने के साथ पृष्ठ गतिशील रूप से बदलता रहेगा।
| # | कोड | प्रश्न | प्रकार | प्रासंगिकता |
| 1 | numKids | आपके कितने बच्चे हैं? | Input numerik | 1 |
| 2 | kid1 | आपके पहले बच्चे की उम्र क्या है? | Input numerik | numKids >= 1 |
| 3 | kid2 | आपके दूसरे बच्चे की उम्र क्या है? | Input numerik | numKids >= 2 |
| 4 | kid3 | आपके तीसरे बच्चे की उम्र क्या है? | Input numerik | numKids >= 3 |
| 5 | kid4 | आपके चौथे बच्चे की उम्र क्या है? | Input numerik | numKids >= 4 |
| 6 | sumKidAges | {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} | समीकरण | 1 |
| 7 | kidSummary | आपने बताया कि आपके {numKids} हैं। {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} | पाठ प्रदर्शन | 1 |
इस उदाहरण को डाउनलोड करने के लिए कृपया इस लिंक पर क्लिक करें: Assessments_survey_example।
नीचे प्रतिनिधि प्रश्नों के स्क्रीनशॉट दिए गए हैं। जैसा कि आप देख सकते हैं, EM उन सभी फ़ील्ड को सिंटैक्स-हाइलाइट करता है जिनमें टेलरिंग हो सकती है। यहाँ आप प्रासंगिकता, समीकरण प्रश्न का प्रकार और किसी प्रश्न के भीतर प्रतिस्थापनों को सिंटैक्स-हाइलाइट करने के उदाहरण देख सकते हैं। आप सहायता, समूह हेडर प्रदर्शन, संदेश आपका स्वागत है और अंत संदेश में भी प्रतिस्थापनों का उपयोग कर सकते हैं।
अगले उदाहरण में, चूँकि प्रासंगिकता {numKids >= 2) है, इसलिए प्रश्न केवल तभी दिखाई देगा जब उत्तरदाता बताए कि उसके कम से कम दो बच्चे हैं।

नीचे आप देख सकते हैं कि प्रत्येक वेरिएबल के साथ .NAOK प्रत्यय जुड़ा हुआ है। इसका कारण यह है कि EM कैस्केडिंग प्रासंगिकता को किस प्रकार सपोर्ट करता है। यदि .NAOK न होता, तो योग की गणना केवल तभी होती जब व्यक्ति कहता कि उसके 4 बच्चे हैं (यानी जब सभी वेरिएबल प्रासंगिक हों)। .NAOK के उपयोग का अर्थ है कि हम योग की गणना तब भी करना चाहते हैं जब सभी या कुछ वेरिएबल अप्रासंगिक हों (यानी "लागू नहीं" (NA) होना ठीक (OK) है)।
हालाँकि, .NAOK विशेषता केवल यह प्रभावित करती है कि वेरिएबल EM में पास किए जाएँ या नहीं। यदि उत्तरदाता पहले कहता है कि उसके 3 बच्चे हैं और प्रत्येक की आयु दर्ज करता है, फिर अपना मन बदलकर कहता है कि उसके 2 बच्चे हैं, तो हम दर्ज किए गए 3 मानों का योग नहीं देखना चाहते - क्योंकि हमारे मामले में तीसरा बच्चा अब "लागू नहीं" है:

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

अब, यहाँ कार्यरत सर्वेक्षण के स्क्रीनशॉट दिए गए हैं।
जब आप पहली बार पृष्ठ पर जाते हैं, तो आपको यह दिखाई देता है। ध्यान दें कि इसमें "You have 0 children" लिखा है, "You have 0 child" नहीं।

यदि मैं बच्चों की संख्या का मान 1 कर दूँ, तो प्रदर्शन तुरंत इस प्रकार बदल जाता है, भले ही यह उसी पृष्ठ पर हो:

अब ध्यान दें कि व्याकरण सही है: "You have 1 child"।
अब मैं बच्चों की संख्या का मान 3 कर देता हूँ, और प्रदर्शन तुरंत इस प्रकार बदल जाता है।
ध्यान दें कि अब आपको नीचे सशर्त संदेश दिखाई देता है: "The sum of ages of your first 3 kids is 0."।
अब मैं अपने काल्पनिक बच्चों की आयु दर्ज करता हूँ, और मुझे यह प्रदर्शन मिलता है, जिसमें उनकी आयु का योग दिखाया गया है:

फिर से, जैसे ही मैं मान दर्ज करता हूँ, स्कोर और प्रदर्शन तुरंत अपडेट हो जाते हैं, इसलिए आप इसका उपयोग मूल्यांकन स्कोर का चालू योग दिखाने के लिए कर सकते हैं।
अब, मैं बच्चों की संख्या का मान 2 कर देता हूँ। प्रदर्शन इस प्रकार बदल गया है:

ध्यान दें कि यद्यपि मैंने तीसरे बच्चे के लिए 5.5 मान दर्ज किया था, रिपोर्ट अब केवल मेरे पहले 2 बच्चों के मानों का योग करती है।
इसका कारण यह है कि तीसरा मान अब अप्रासंगिक है, और अप्रासंगिक मानों को EM सक्रिय रूप से अनदेखा कर देता है।
यदि मैं बच्चों की संख्या वापस 3 कर दूँ, तो मुझे मेरा दर्ज किया हुआ 5.5 का मान फिर से दिखाई देगा। इसलिए, पृष्ठ पर दर्ज की गई कोई भी जानकारी नष्ट नहीं होती।
हालाँकि, यदि मैं अगले या पिछले पृष्ठ पर जाता हूँ, तो सभी अप्रासंगिक मान सत्र और डेटाबेस में NULL कर दिए जाएँगे। इसलिए, यदि मैं मान 2 ही रखूँ, अगले पृष्ठ पर जाऊँ, और फिर वापस आकर कहूँ कि मेरे वास्तव में 3 बच्चे हैं, तो मुझे 5.5 की आयु अब दिखाई नहीं देगी।
डेटा दर्ज करें और उसी पृष्ठ पर दर्ज की गई जानकारी की गतिशील रूप से बदलती रिपोर्ट देखें
यह उदाहरण LimeSurvey में टेलरिंग प्रक्रिया को प्रस्तुत करता है।
इस उदाहरण को डाउनलोड करने के लिए, निम्नलिखित लिंक पर क्लिक करें: गतिशील परिवर्तन सर्वेक्षण उदाहरण।
शुरुआत में पृष्ठ ऐसा दिखता है। आपको केवल वह प्रश्न दिखाई देता है जो पूछता है कि आप किस शहर में रहते हैं:

जैसे ही आप कोई उत्तर दर्ज करना शुरू करते हैं, टेलरिंग प्रक्रिया भी शुरू हो जाती है:

जैसे-जैसे आप उत्तर दर्ज करते हैं, पृष्ठ के नीचे दी गई तालिका आपके उत्तरों के उत्तर कोड और मान दिखाने के लिए अपडेट हो जाती है।

डीबगिंग के सामान्य उदाहरण
नेस्टेड if() स्टेटमेंट (सशर्त तर्क)
EM फ़ंक्शन "if(test,do_if_true,do_if_false)" को सपोर्ट करता है, ताकि आप सशर्त तर्क या टेलरिंग कर सकें। इस फ़ंक्शन को नेस्ट करके "if { } else if { } else { }" के समकक्ष बनाया जा सकता है। यदि कोष्ठक संतुलित नहीं हैं (जैसे, कोई समापन दायाँ कोष्ठक छूट गया है) या कोई अतिरिक्त दायाँ कोष्ठक है, तो EM आपको सूचित करेगा। लंबे नेस्टेड if स्टेटमेंट लिखते समय आपको कोष्ठकों की गिनती करनी चाहिए, उसे सेव करें, सिंटैक्स त्रुटियों की जाँच करें और यदि कोई मिले तो उन्हें ठीक करें। आइए नीचे दिए गए उदाहरण को साथ मिलकर देखें।
नीचे उपयोग किए गए प्रश्नों का समूह यहाँ से प्राप्त किया जा सकता है: टेलरिंग सर्वेक्षण उदाहरण.lsg
सबसे पहले, कुछ भी दर्ज न करने पर आपको केवल "नमस्कार।" दिखाई देता है।

यदि आप कोई नाम दर्ज करते हैं, तो यह "नमस्कार {name}।" दिखाता है।

यदि आप आयु दर्ज करते हैं, तो आपको एक अनुकूलित संदेश मिलता है, जो इस पर निर्भर करता है कि आप स्कूल-पूर्व आयु के बच्चे हैं या नहीं:

स्कूल जाने की आयु, किशोर या वयस्क। यह एक किशोर का उदाहरण है जो गुमनाम रहना चाहता है:

यह इस समूह की लॉजिक फ़ाइल है। जैसा कि आप "if-based" प्रश्न में देख सकते हैं, व्यक्ति की आयु के आधार पर नेस्टेड if स्टेटमेंट हैं।

जब आप शुरू में इस प्रश्न को एडिट कर रहे होते हैं, तो संभव है कि किसी बिंदु पर कोष्ठकों की संख्या गलत हो जाए। यदि कोष्ठक कम हों, तो यह होता है:

यदि आप लाल बॉक्स से घिरे शब्द "if" पर माउस ले जाते हैं, तो यह "Parentheses not balanced" दिखाता है। इस मामले में, "already an adult!" के बाद चार समापन कोष्ठक होने चाहिए, लेकिन केवल तीन हैं।
दूसरी ओर, यदि आपके पास एक अतिरिक्त दायाँ कोष्ठक है, तो वह इस तरह लाल बॉक्स से घिरा होगा:

जब आप वास्तव में प्रश्न को एडिट कर रहे होते हैं, तो प्रश्न इस तरह दिखता है:

