স্থানীয় {
... }
গোষ্ঠীগুলি বুদ্ধিমানের সাথে ব্যবহার করুন
এই উত্তরে যেমন উল্লেখ করা হয়েছে , সক্রিয় চরিত্রগুলি ~
ম্যাক্রোর নাম হিসাবে ব্যবহার করা যেতে পারে। দুর্ভাগ্যক্রমে, ~
কেবলমাত্র ডিফল্টরূপে সক্রিয় চরিত্রটি এবং অন্য একটি চরিত্রের জন্য ক্যাটকোড পরিবর্তন করা ব্যয়বহুল: \catcode`!13
12 বাইট লাগে যদি নতুন ম্যাক্রো সংজ্ঞাটি কেবল আপনার কোডের একটি ছোট অঞ্চলে প্রয়োজন হয়, স্থানীয় গোষ্ঠীগুলি সমাধান হতে পারে।
টেক্স যখন খোলা একটি নতুন স্থানীয় গোষ্ঠীতে প্রবেশ করে {
, এটি অভ্যন্তরীণ সংরক্ষণের স্ট্যাকের উপর একটি নতুন গ্রুপিং স্তর তৈরি করে। এর অর্থ হ'ল বর্তমান সমস্ত ম্যাক্রোগুলি এবং রেজিস্টারগুলি সংরক্ষিত হয়েছে। তাদের কোনও পরিবর্তন (স্পষ্টভাবে চিহ্নিত হিসাবে চিহ্নিত না করা \global
) এখন কেবলমাত্র গ্রুপটি বন্ধ না হওয়া পর্যন্ত সক্রিয় থাকবে }
। এই যে মানে~
একটি গোষ্ঠীর মধ্যে নতুন সংজ্ঞা দেওয়া যেতে পারে, নতুন সংজ্ঞা দিয়ে সেখানে ব্যবহার করা যেতে পারে এবং গোষ্ঠীটি শেষ হয়ে গেলে পুরানো সংজ্ঞাটি স্বয়ংক্রিয়ভাবে পুনরুদ্ধার হবে।
এখানে একটি উদাহরণ:
\def~{abc}
~ -- {\def~{123}~} -- ~
এই ফলাফল
abc - 123 - abc
এই গোষ্ঠীকরণ ব্যবস্থার একটি আকর্ষণীয় পার্শ্ব প্রতিক্রিয়া হ'ল পুরানো মানগুলি এখনও সেখানে পরিবর্তন না হওয়া পর্যন্ত গ্রুপের অভ্যন্তরে উপলব্ধ। এটি চিত্রিত করার জন্য, কল্পনা করুন যে আমরা একটি কাউন্টারের মানের উপর ভিত্তি করে বেশ কয়েকটি অক্ষর মুদ্রণ করতে চাই, একটি নির্দিষ্ট দৈর্ঘ্য পর্যন্ত ফাঁকা স্থান দিয়ে তাদের প্যাড করতে চাই এবং মূল পাল্টা মানটি দিয়ে যেতে চাই। এটি নিম্নলিখিত দ্বারা অর্জন করা যেতে পারে:
\newcount\x
\x=3
Print a char \the\x\ times,
{\x=-\x \advance\x 10 pad with \the\x\ spaces,}
and go on with x=\the\x.
যা ফলাফল
একটি চর 3 বার মুদ্রণ করুন, 7 স্পেস সহ প্যাড করুন এবং এক্স = 3 দিয়ে এগিয়ে যান।
এই গ্রুপিং আচরণটি বিশেষত গুরুত্বপূর্ণ যদি আপনি লুপিং \loop ... \repeat
নেস্ট করার জন্য টেক্সের মানক ম্যাক্রো ব্যবহার করতে চান । এই ম্যাক্রোগুলি অভ্যন্তরীণ কমান্ডগুলি সংজ্ঞায়িত করে এবং কীভাবে এগিয়ে যায় তা নির্ধারণের জন্য এগুলি ব্যবহার করে। অভ্যন্তরীণ লুপটি বন্ধনীগুলিতে না রেখে তাদের বাসা বাঁধা অভ্যন্তরীণ আদেশগুলি বিভ্রান্ত করবে এবং অপ্রত্যাশিত আচরণের দিকে পরিচালিত করবে।