.TH \%chem 1 "2026-03-15" "groff 1.24.1" .SH "نام (NAME)" \%chem \- جایگذاری نمودارهای ساختار شیمیایی در اسناد .I groff . . .\" ==================================================================== .\" Legal Terms .\" ==================================================================== .\" .\" Copyright 2006-2020 Free Software Foundation, Inc. .\" .\" This file is part of chem. .\" .\" chem is distributed with groff, the GNU roff typesetting system. .\" .\" groff is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License as published by .\" the Free Software Foundation, either version 3 of the License, or .\" (at your option) any later version. .\" .\" groff is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY .\" or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public .\" License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see .\" . . .\" Save and disable compatibility mode (for, e.g., Solaris 10/11). .do nr *groff_chem_1_man_C \n[.cp] .cp 0 . .\" Define fallback for groff 1.23's MR macro if the system lacks it. .nr do-fallback 0 .if !\n(.f .nr do-fallback 1 \" mandoc .if \n(.g .if !d MR .nr do-fallback 1 \" older groff .if !\n(.g .nr do-fallback 1 \" non-groff *roff .if \n[do-fallback] \{\ . de MR . ie \\n(.$=1 \ . I \%\\$1 . el \ . IR \%\\$1 (\\$2)\\$3 . . .\} .rr do-fallback . . .\" ==================================================================== .SH "خلاصه دستور (SYNOPSIS)" .\" ==================================================================== . .SY \%chem .RB [ \-\- ] .RI [ file\~ .\|.\|.] .YS . . .P .SY \%chem .B \-h .YS . .SY \%chem .B \-\-help .YS . . .P .SY \%chem .B \-v .YS . .SY \%chem .B \%\-\-version .YS . . .\" ==================================================================== .SH "توضیحات (DESCRIPTION)" .\" ==================================================================== . دستور .I chem نمودارهای ساختار شیمیایی را تولید می‌کند. . نسخه فعلی برای شیمی آلی (پیوندها، حلقه‌ها) مناسب‌ترین است. . برنامه .I \%chem یک پیش‌پردازنده .I groff مانند .IR \%eqn ، .IR \%pic ، .IR \%tbl و غیره است. . این برنامه خروجی .I pic تولید می‌کند، به طوری که تمام بخش‌های .I chem به نمودارهایی به زبان .I pic ترجمه می‌شوند. . . .P اگر هیچ عملوندی داده نشود، یا اگر .I file برابر با .RB \[lq] \- \[rq] باشد، .I \%chem ورودی استاندارد را می‌خواند. . گزینه‌های .B \-h و .B \-\-help پیام راهنمای نحوه استفاده را نمایش می‌دهند، در حالی که .B \-v و .B \%\-\-version اطلاعات نسخه را نمایش می‌دهند؛ سپس همه خارج می‌شوند. . . .P برنامه .I \%chem از فایل منبع پرل .IR chem.pl سرچشمه می‌گیرد. . این برنامه به .I \%pic دستور می‌دهد تا رونوشتی از فایل ماکروی .IR chem.pic را اضافه کند. . علاوه بر این، فایل منبع .I groff به نام .I pic.tmac نیز بارگذاری می‌شود. . . .P نمودارهای .I chem به سبکی مشابه .I eqn و .IR pic ، به یک زبان ویژه نوشته می‌شوند. . . .P مجموعه‌ای از خطوط .I chem به این شکل است: . . .IP .EX \&.cstart .I chem data \&.cend .EE . . .P خطوط حاوی کلیدواژه‌های .B .cstart و .B .cend به ترتیب ورودی .IR \%chem را آغاز کرده و پایان می‌دهند. . در بافت .IR pic ، یعنی پس از فراخوانی .BR .PS ، ورودی .I chem را می‌توان به صورت اختیاری به جای آن با خط .B \%begin\~chem آغاز کرده و با خطی شامل تک‌کلمه .B end پایان داد. . . .P هر چیزی بیرون از این خطوط مقداردهی اولیه، بدون تغییر عبور داده می‌شود؛ تمام داده‌های میان این خطوط اولیه به دستورات .I pic برای رسم نمودار تبدیل می‌شوند. . . .P به عنوان مثال: . .IP .EX \&.cstart CH3 bond CH3 \&.cend .EE . . .P دو گروه .B CH3 را با یک پیوند میان آن‌ها چاپ می‌کند. . . .P اگر می‌خواهید فقط خروجی .I groff ایجاد کنید، باید .I \%chem و به دنبال آن .I groff را همراه با گزینه .B \-p برای فعال‌سازی .IR \%pic اجرا کنید: .IP .I \%chem .RI [ file\~ .\|.\|.\&] .BR "| groff \-p\~" .\|.\|. . . .P برنامه .I \%chem به ماژول پرل .I \%Math::\:Trig نیاز دارد که از طریق .UR \%https://\:www\:.cpan\:.org CPAN .UE در دسترس است. . . .\" ==================================================================== .SH "زبان (LANGUAGE)" .\" ==================================================================== . زبان ورودی .I chem نسبتاً کوچک است. . این زبان حلقه‌هایی با سبک‌های گوناگون و روشی برای اتصال دلخواه آن‌ها به یکدیگر، پیوندهایی با سبک‌های مختلف، گروه‌ها یا بخش‌های مولکولی (moieties) (مانند .BR C ، .BR NH3 و غیره) و رشته‌ها را فراهم می‌آورد. . . .\" ==================================================================== .SS "تنظیم متغیرها" .\" ==================================================================== . متغیرهایی وجود دارند که می‌توان آن‌ها را با دستورات تنظیم کرد. . این دستورات دو قالب ممکن دارند؛ یا . .RS .P .I "variable value" .RE . .P یا . .RS .P .IB "variable " = " value" .RE . .P این دستور .I variable مربوطه را برابر با آرگومان .I value قرار می‌دهد. اگر آرگومان‌های بیشتری داده شود، تنها آخرین آرگومان در نظر گرفته شده و سایر آرگومان‌ها نادیده گرفته می‌شوند. . . .P تنها چند متغیر وجود دارند که می‌توان با این دستورات تنظیم کرد: . .TP .BI textht " arg" تنظیم ارتفاع متن روی .IR arg ؛ پیش‌فرض 0.16 است. . .TP .BI cwid " arg" تنظیم عرض نویسه روی .IR arg ؛ پیش‌فرض 0.12 است. . .TP .BI db " arg" تنظیم طول پیوند روی .IR arg ؛ پیش‌فرض 0.2 است. . .TP .BI size " arg" مقیاس‌بندی نمودار برای اینکه در اندازه پوینت .I arg مناسب به نظر برسد؛ پیش‌فرض 10 پوینت است. . . .\" ==================================================================== .SS "پیوندها" .\" ==================================================================== . .SY bond .RI [ direction ] .RI [ length\ n ] .RB [ from\ \c .IR Name | picstuff ] .YS . . .P دستور .B bond یک پیوند یگانه را در جهت مشخص‌شده از نزدیک‌ترین گوشه .I Name رسم می‌کند. .B bond همچنین می‌تواند به صورت .BR "double bond" ، .BR "front bond" ، .BR "back bond" و غیره باشد. . (به زودی به .I Name بازخواهیم گشت.) . . .P مولفه .I direction زاویه بر حسب درجه است (0\~به سمت بالا، در جهت عقربه‌های ساعت مثبت است) یا یک کلمه جهت مانند .BR up ، .BR down ، .B sw (=\~southwest یا جنوب غربی) و غیره. . اگر هیچ جهتی مشخص نشود، پیوند در جهت جاری (معمولاً جهت آخرین پیوند) رسم می‌شود. . . .P به طور معمول پیوند از آخرین شیء قرار داده شده آغاز می‌شود؛ این رفتار را می‌توان با مشخص کردن یک مکان .B from تغییر داد. . برای مثال، برای ساخت یک زنجیره آلکیل ساده: . .RS .TS tab (@); lb l. CH3 bond@(این یکی از CH3 به سمت راست می‌رود) C@(در انتهای سمت راست پیوند) double bond up@(از C) O@(در انتهای پیوند دوگانه) bond right from C CH3 .TE .RE . . .P می‌توان طول پیوند را بر حسب اینچ مشخص کرد تا طول پیش‌فرض بازنویسی شود. . سایر دستورات .I pic را می‌توان به انتهای دستور پیوند متصل کرد تا پیوندهای نقطه‌چین یا خط‌چین ایجاد شوند یا یک مکان .B to مشخص شود. . . .\" ==================================================================== .SS "حلقه‌ها" .\" ==================================================================== . حلقه‌های فراوانی وجود دارند، اما تنها حلقه‌های پنج‌ضلعی و شش‌ضلعی به طور گسترده پشتیبانی می‌شوند. . دستور .B ring به تنهایی یک حلقه شش‌ضلعی است؛ .B benzene حلقه بنزن با یک دایره درون آن است. .B aromatic یک دایره درون هر نوع حلقه‌ای قرار می‌دهد. . . .P .SY ring .RB \%[ pointing\ ( up | right | left | down )] .RB \%[ aromatic ] .RB [ put\ Mol\ at\ \fIn\/\fP ] .RB \%[ double\ \c .IR i , j\ \/\c .IR k , l\ \/\c \&.\|.\|.\& .RI [ picstuff ] .YS . . .P رأس‌های یک حلقه با 1، 2، \&.\|.\|.\& از رأسی که در جهت طبیعی قطب‌نما اشاره می‌کند، شماره‌گذاری می‌شوند. . بنابراین برای یک حلقه شش‌ضلعی که رأس آن به سمت بالاست، رأس بالا 1\~است؛ در حالی که اگر حلقه رأسی در سمت شرق داشته باشد، آن رأس 1\~خواهد بود. . این مفهوم به این شکل بیان می‌شود: . .IP .EX R1: ring pointing up R2: ring pointing right .EE . . .P رأس‌های حلقه .BR .V1 ، \&.\|.\|.، .BI .V n\fR،\fP نام‌گذاری می‌شوند که .B .V1 در جهت اشاره قرار دارد. . بنابراین گوشه‌های .B R1 عبارتند از .B R1.V1 (بخش .IR بالا )، .BR R1.V2 ، .BR R1.V3 ، .B R1.V4 (بخش .IR پایین ) و غیره؛ در حالی که برای .BR R2 ، راس .B R2.V1 راست‌ترین رأس و .B R2.V4 چپ‌ترین رأس است. . این نام‌های رأس‌ها برای اتصال پیوندها یا سایر حلقه‌ها استفاده می‌شوند. . به عنوان مثال: . .IP .EX R1: benzene pointing right R2: benzene pointing right with .V6 at R1.V2 .EE . . .P دو حلقه بنزن متصل در امتداد یک ضلع ایجاد می‌کند. . . .P پیوندهای دوگانه داخلی به صورت .B \%double .IB n1 , "n2 n3" , n4 .RB .\|.\|. ؛ مشخص می‌شوند؛ هر جفت عدد یک پیوند داخلی اضافه می‌کند. . بنابراین شکل جایگزین حلقه بنزن عبارت است از: . .IP .B "ring double 1,2 3,4 5,6" . . .P هتروسیکل‌ها (حلقه‌هایی که در یکی از رأس‌های آن‌ها عنصری غیر از کربن قرار دارد) به صورت .BI put\ X\ at\ V\fR،\fP نوشته می‌شوند، مانند: . .IP .B "R: ring put N at 1 put O at 2" . . .P در این هتروسیکل، .B R.N و .B R.O مترادف‌هایی برای .B R.V1 و .BR R.V2 می‌شوند. . . .P دو نوع حلقه پنج‌ضلعی وجود دارد. . .B ring5 پنج‌ضلعی است که یک ضلع آن با حلقه شش‌ضلعی همخوانی دارد؛ این حلقه دارای چهار جهت طبیعی است. . یک .B \%flatring یک حلقه پنج‌ضلعی است که با برش دادن یک گوشه از یک حلقه شش‌ضلعی ایجاد شده است تا دقیقاً با حلقه‌های شش‌ضلعی منطبق شود. . . .P توضیحات یک حلقه باید در یک خط واحد جا شود. . . .\" ==================================================================== .SS "گروه‌ها و رشته‌ها" .\" ==================================================================== . یک گروه یا جزء ساختاری (moiety)، رشته‌ای از نویسه‌ها است که با یک حرف بزرگ آغاز می‌شود، مانند N(C2H5)2. . اعداد به زیرنویس تبدیل می‌شوند (مگر اینکه مقادیر کسری به نظر برسند، مانند N2.5H). . نام یک گروه پس از حذف نویسه‌های خاص از آن تعیین می‌شود؛ برای مثال، N(C2H5)2 دارای نام NC2H52 خواهد بود. . . .P گروه‌ها را می‌توان به دو شیوه مشخص کرد. . به طور معمول یک گروه درست پس از آخرین مورد ذکر شده، با یک نقطه‌ویرگول که اطراف آن با فاصله احاطه شده، قرار می‌گیرد؛ به عنوان مثال: . .IP .B "B1: bond ; OH" . .P در اینجا گروه .BR OH است؛ که پس از یک پیوند قرار می‌گیرد. . . .P در شیوه دوم، یک گروه می‌تواند به عنوان اولین کلمه در یک دستور شبه‌ .IR pic قرار گیرد، مانند: . .IP .B "CH3 at C + (0.5,0.5)" . .P در اینجا گروه .BR CH3 است. این گروه در موقعیتی نسبت به .BR C ، گروهی که پیش‌تر در ساختار شیمیایی استفاده شده، قرار می‌گیرد. . . .P بنابراین نام گروه‌ها را می‌توان به عنوان موقعیت‌های .I chem در همه جای کد .I chem مشخص کرد. . در پس ظاهر چاپی خود، گروه‌ها در واقع نام‌هایی برای مکان‌ها هستند. . . .P گروه .B BP خاص است. . این گروه چاپ نمی‌شود، بلکه تنها به عنوان یک نشانه برای ارجاع در دستورات بعدی .I chem به کار می‌رود. . به عنوان مثال: . .IP .B "bond ; BP" . .P نشانه‌ای را در انتهای پیوند قرار می‌دهد. . سپس می‌توان از این نشانه برای تعیین یک مکان استفاده کرد. . نام .B BP از .I branch point (نقطه انشعاب یا تقاطع خطوط) گرفته شده است. . . .P رشته‌ای که درون علامت نقل‌قول دوتایی .B \(dq قرار دارد به عنوان بخشی از دستور .I chem تفسیر می‌شود. . این نشان‌دهنده رشته‌ای است که باید (بدون نقل‌قول‌ها) چاپ شود. . با متن درون نقل‌قول .BR \(dq .\|.\|.\& \(dq کم و بیش مانند یک گروه رفتار می‌شود، با این تفاوت که هیچ تغییری در بخش نقل‌قول‌شده اعمال نمی‌شود. . . .\" ==================================================================== .SS "نام‌ها" .\" ==================================================================== . در زنجیره آلکیل بالا، توجه کنید که اتم کربن .B C هم برای رسم یک شیء و هم به عنوان نامی برای یک مکان استفاده شد. . یک گروه همیشه نامی را برای یک مکان تعریف می‌کند؛ شما می‌توانید در عوض از نام‌های دلخواه خود برای مکان‌ها استفاده کنید، و در واقع، برای حلقه‌ها مجبور به انجام این کار خواهید بود. . یک نام به سادگی به صورت زیر است: . .IP .IB Name : \&.\|.\|. . . .P مقدار .I Name اغلب نام یک گروه مانند .BR CH3 است، اما لزوماً نیازی نیست چنین باشد. . هر نامی که با یک حرف بزرگ آغاز شود و تنها شامل حروف و اعداد باشد معتبر است. . . .P .RS .EX First: bond "bond 30 from First" .EE .RE . . .\" ==================================================================== .SS "متفرقه" .\" ==================================================================== . ساختار ویژه .RS .TP .BR bond \~.\|.\|.\&\~ "; moiety" .RE .P معادل است با: .IP .EX bond moiety .EE . . .P در غیر این صورت، هر مورد باید در یک خط جداگانه (و فقط در یک خط) قرار گیرد. توجه داشته باشید که پس از نقطه‌ویرگولی که دستورات را از هم جدا می‌کند، باید یک فاصله (whitespace) وجود داشته باشد. . . .P نویسه نقطه .B .\& یا علامت نقل‌قول تکی .B \[aq] در اولین ستون یک خط، نشان‌دهنده یک دستور .I troff است که عیناً عبور داده می‌شود. . . .P خطی که اولین نویسه غیرفاصله‌ای آن علامت هش .RB ( # ) باشد به عنوان توضیح در نظر گرفته شده و نادیده گرفته می‌شود. . با این حال، نویسه‌های هش درون یک کلمه حفظ می‌شوند. . . .P خطی که اولین کلمه آن .B pic باشد، پس از حذف کلمه .B pic عیناً عبور داده می‌شود. . . .P دستور .IP .B size .I n .P نمودار را مقیاس‌بندی می‌کند تا در اندازه پوینت\~\c .I n مناسب به نظر برسد (پیش‌فرض 10\~پوینت است). . . .P هر چیز دیگری به عنوان کد .I pic فرض شده و همراه با یک برچسب عیناً عبور داده می‌شود. . . .P از آنجا که .I \%chem یک پیش‌پردازنده .I \%pic است، امکان درج عبارات .I pic در میانه یک نمودار برای رسم مواردی که خود .I chem فراهم نکرده، وجود دارد. . چنین عبارات .IR pic ی جهت وضوح بیشتر باید با افزودن کلمه .B pic به عنوان اولین کلمه خط، در کد .I chem گنجانده شوند. . . .P دستورات .I pic زیر به عنوان دستورات .I chem پذیرفته می‌شوند، بنابراین نیازی به کلمه دستوری .B pic نیست: . .IP .B define آغاز تعریف یک ماکروی .I pic درون .IR chem . . .RS .TP .B [ آغاز یک بلوک ترکیبی (block composite). . .TP .B ] پایان یک بلوک ترکیبی. . .TP .B { آغاز بلوک تعریف ماکرو. . .TP .B } پایان بلوک تعریف ماکرو. .RE . .P نام‌های ماکرو از دستورات .B define ذخیره شده و فراخوانی آن‌ها نیز به عنوان دستور .I chem پذیرفته می‌شود. . . .\" ==================================================================== .SS "فهرست خواسته‌ها" .\" ==================================================================== . .P این فهرست کارهای انجام‌نشده (TODO) توسط برایان کرنیهان (Brian Kernighan) گردآوری شده است. . . .P بررسی خطاها بسیار حداقلی است؛ خطاها معمولاً به شیوه‌ای مبهم و غیرمستقیم توسط .I pic تشخیص داده شده و گزارش می‌شوند. . . .P هیچ سازوکاری برای کتابخانه یا گنجاندن فایل وجود ندارد، و هیچ روش کوتاه‌نویسی برای ساختارهای تکراری در دست نیست. . . .P سازوکار گسترش، ایجاد ماکروهای .I pic است، اما نوشتن درست آن‌ها دشوار است و تمام ویژگی‌های اشیاء توکار را دارا نیستند. . . .P هنوز فرمول‌نویسی درون‌خطی شیمیایی وجود ندارد (برای مثال، مشابه ساختار .BR $ .\|.\|. $ در .IR eqn ). . . .P هیچ راهی برای کنترل نقطه ورود پیوندها روی گروه‌ها وجود ندارد. . به طور معمول یک پیوند اگر از بالا یا پایین وارد شود به اتم کربن متصل می‌شود و در غیر این صورت به نزدیک‌ترین گوشه وصل می‌گردد. . . .P پیوندهای ناشی از اتم‌های استخلافی روی هتروسیکل‌ها بدون افزودن اندکی کد .I pic در محل مناسب متصل نمی‌شوند. . . .P هیچ ساختار پایه مناسبی برای کروشه‌ها وجود ندارد. . . .P متن (رشته‌های درون نقل‌قول) چندان خوب کار نمی‌کند. . . .P نیاز به پیوند موج‌دار (squiggle bond) وجود دارد. . . .\" ==================================================================== .SH "فایل‌ها (FILES)" .\" ==================================================================== . .TP .I /usr/\:\%share/\:\%groff/\:\%1.24.1/\:pic/\:chem\:.pic مجموعه‌ای از ماکروهای .I pic مورد نیاز .IR \%chem . . .TP .I /usr/\:\%share/\:\%groff/\:\%1.24.1/\:\%tmac/\:pic\:.tmac فایل ماکرویی که .BR .PS ، .BR .PE و .B .PF را برای وسط‌چین کردن نمودارهای .I pic مجدداً تعریف می‌کند. . .TP .IR /usr/\:\%share/\:\%doc/\:\%groff\-1.24.1/\:\%examples/\:chem/\: * .chem فایل‌های مثال برای .IR chem . . .TP .IR /usr/\:\%share/\:\%doc/\:\%groff\-1.24.1/\:\%examples/\:chem/\:122/\: * .chem فایل‌های مثال از مقاله .I chem توسط نویسندگان آن: \[lq]CHEM\[em]A Program for Typesetting Chemical Structure Diagrams: User Manual\[rq] (CSTR\~#122). . . .\" ==================================================================== .SH "نویسندگان (AUTHORS)" .\" ==================================================================== . نسخه گنو .I chem توسط .MT groff\-bernd\:.warken\-72@\:web\:.de برند وارکن (Bernd Warken) .ME نوشته شده است. . این برنامه بر اساس مستندات نسخه اولیه .I awk از .IR chem ، اثر برایان کرنیهان (Brian Kernighan) ساخته شده است. . . .\" ==================================================================== .SH "همچنین ببینید (SEE ALSO)" .\" ==================================================================== . \[lq]CHEM\[em]A Program for Typesetting Chemical Diagrams: User Manual\[rq] نوشته جان ال. بنتلی (Jon L.\& Bentley)، لین دابلیو. جلینسکی (Lynn W.\& Jelinski) و برایان دابلیو. کرنیهان (Brian W.\& Kernighan)، سال 1992، گزارش فنی علوم محاسبات آزمایشگاه‌های بل AT&T شماره 122 (AT&T Bell Laboratories Computing Science Technical Report No.\& 122) . . .P .MR groff 1 ، .MR \%pic 1 . . .\" Restore compatibility mode (for, e.g., Solaris 10/11). .cp \n[*groff_chem_1_man_C] .do rr *groff_chem_1_man_C . . .\" Local Variables: .\" fill-column: 72 .\" mode: nroff .\" End: .\" vim: set filetype=groff textwidth=72: