| catdoc(1) | General Commands Manual | catdoc(1) |
نام (NAME)
catdoc - فایلهای MS-Word را خوانده و محتوای آنها را به صورت متن ساده در خروجی استاندارد قرار میدهد
خلاصه دستور (SYNOPSIS)
catdoc [-vlu8btawxV] [-m number] [ -s charset] [ -d charset] [ -f output-format] file
توضیحات (DESCRIPTION)
برنامه catdoc رفتاری بسیار شبیه به cat(1) دارد، اما فایلهای مایکروسافت ورد (MS-Word) را خوانده و متن خوانا برای انسان را در خروجی استاندارد تولید میکند. این ابزار به صورت اختیاری میتواند از توالیهای گریز latex(1) برای نویسههایی که در LaTeX معنای خاصی دارند استفاده کند. همچنین تلاشهایی برای تشخیص جدولهای MS-Word انجام میدهد، هرچند هرگز سعی نمیکند سربرگهای درستی برای محیط tabular در LaTeX بنویسد. قالبهای خروجی دیگر مانند HTML نیز به سادگی قابل تعریف هستند.
برنامه catdoc تلاشی برای استخراج اطلاعات قالببندی به جز جدولها از سند MS-Word نمیکند؛ بنابراین حالتهای مختلف خروجی اساساً به این معنی است که نویسههای متفاوتی باید اسکیپ شوند و روشهای گوناگونی برای نمایش نویسههایی که در مجموعه نویسه خروجی وجود ندارند به کار روند. بخش «جایگزینی نویسهها» را در زیر ببینید.
ابزار catdoc از نمایش درونی متنی unicode(4) استفاده میکند، بنابراین میتواند متونی را که مجموعه نویسه سند مبدا با مجموعه نویسه سیستم مقصد همخوانی ندارد تبدیل کند. بخش «مجموعههای نویسه» را در زیر ببینید.
اگر نام هیچ فایلی ارائه نشود، catdoc ورودی استاندارد خود را پردازش میکند مگر اینکه ورودی یک پایانه (ترمینال) باشد. از آنجا که بعید است کاربری یک سند Word را مستقیماً از صفحهکلید وارد کند، اگر catdoc بدون آرگومان اجرا شود و ورودی استاندارد نیز تغییر مسیر نیافته باشد، پیام راهنمای کوتاهی چاپ کرده و خارج میشود. پردازش ورودی استاندارد (حتی در میان سایر فایلها) را میتوان با استفاده از خط تیره «-» به عنوان نام فایل اجبار کرد.
به طور پیشفرض، catdoc خطوطی را که طول آنها بیش از ۷۲ نویسه است میشکند و پاراگرافها را با خطوط خالی جدا میکند. این رفتار را میتوان با گزینه -w غیرفعال کرد. در حالت عریض (wide)، ابزار catdoc هر پاراگراف را به صورت یک خط طولانی چاپ میکند که برای وارد کردن (import) به واژهپردازهایی که خود عمل شکستن خطوط را انجام میدهند مناسب است.
گزینهها (OPTIONS)
- -a
- میانبر برای -f ascii. متن ASCII را به عنوان خروجی تولید میکند. ستونهای جدول را با نویسه برگه (TAB) از هم جدا میسازد.
- -b
- پردازش فایلهای آسیبدیده MS-Word. به طور معمول، catdoc بررسی میکند که آیا ۸ بایت اول فایل، امضای Microsoft OLE است یا خیر. اگر چنین باشد، فایل را پردازش میکند؛ در غیر این صورت فقط آن را در خروجی کپی میکند. این گزینه برای استفاده از catdoc به عنوان پالایهای (فیلتر) برای مشاهده تمام فایلهای دارای پسوند .doc در نظر گرفته شده است.
- -dcharset
- تعیین نام مجموعه نویسه مقصد. فایل مجموعه نویسه دارای قالبی است که در بخش «مجموعههای نویسه» در ادامه توضیح داده شده و باید دارای پسوند .txt بوده و در پوشه کتابخانه catdoc (مسیر ${exec_prefix}/lib/catdoc) قرار داشته باشد. به طور پیشفرض، در صورت کامپایل با پشتیبانی از langinfo، از مجموعه نویسه محلی (locale) جاری استفاده میشود.
- -fformat
- تعیین قالب خروجی همانطور که در بخش «جایگزینی نویسهها» در ادامه تشریح شده است. catdoc همراه با دو قالب خروجی عرضه میشود: ascii و tex. در صورت تمایل میتوانید قالب خود را نیز اضافه کنید.
- -l
- باعث میشود catdoc فهرست نامهای مجموعههای نویسه موجود را در خروجی استاندارد چاپ کرده و با موفقیت خارج شود.
- -mnumber
- تعیین حاشیه راست برای متن (پیشفرض ۷۲). گزینه -m 0 معادل -w است.
- -scharset
- تعیین مجموعه نویسه مبدا (مجموعه نویسه استفادهشده در سند Word)، در صورتی که سند Word حاوی متن UTF-16 نباشد. هنگام خواندن اسناد rtf، معمولاً این گزینه لازم نیست زیرا اسناد rtf حاوی مشخصه ansicpg هستند؛ اما ممکن است توسط Word به اشتباه تنظیم شده باشد (مانند اسناد RTF به زبان روسی که در آنها cp1252 مشخص شده بود). در این حالت، این گزینه نسبت به مجموعه نویسه مشخصشده در سند اولویت خواهد داشت. اما عبارت source_charset در فایل پیکربندی نسبت به مجموعه نویسه درون سند اولویت کمتری دارد.
- -t
- میانبر برای -f tex است؛ تمام نویسههای قابل چاپ را که در LaTeX(1) معنای خاصی دارند به توالیهای کنترلی مناسب تبدیل میکند. همچنین ستونهای جدول را با & جدا میسازد.
- -u
- اعلام میکند که سند Word حاوی نمایش متنی یونیکد (UTF-16) است (مانند برخی اسناد Word-97). اگر catdoc نتواند سند Word را با مجموعه نویسه پیشفرض تصحیح کند، این گزینه را امتحان کنید.
- -8
- اعلام میکند که سند Word هشتبیتی (8-bit) است. این گزینه برای مواقعی است که catdoc قالب فایل را به درستی تشخیص نمیدهد.
- -w
- شکستن خطوط (word wrapping) را غیرفعال میکند. به طور پیشفرض، خروجی catdoc به خطوطی با طول حداکثر ۷۲ نویسه (یا عددی که با گزینه -m تعیین شده) تقسیم میشود و پاراگرافها با یک خط خالی جدا میگردند. با این گزینه، هر پاراگراف در یک خط ممتد و بلند قرار میگیرد.
- -x
- باعث میشود catdoc به جای علامت سوال، نویسههای یونیکد ناشناخته را به صورت \xNNNN در خروجی چاپ کند.
- -v
- باعث میشود catdoc پیش از شروع متن اصلی، اطلاعاتی درباره ساختار سند Word در خروجی استاندارد چاپ کند.
- -V
- نسخه برنامه catdoc را چاپ میکند.
مجموعههای نویسه (CHARACTER SETS)
هنگام پردازش فایل MS-Word، برنامه catdoc از اطلاعات مربوط به دو مجموعه نویسه (معمولاً متفاوت) استفاده میکند: ورودی و خروجی. این اطلاعات در فایلهای متنی ساده در پوشه کتابخانه catdoc ذخیره میشوند. فایلهای مجموعه نویسه باید حاوی دو عدد هگزادسیمال با فاصله از هم باشند: کد ۸ بیتی در مجموعه نویسه و کد ۱۶ بیتی یونیکد. هر چیزی از علامت هش (#) تا انتهای خط و همچنین خطوط خالی نادیده گرفته میشوند.
توزیع catdoc شامل برخی از این مجموعههای نویسه است. تعاریف مجموعههای نویسه دیگر که مستقیماً توسط catdoc قابل استفاده هستند را میتوان از ftp.unicode.org دریافت کرد. فایلهای مجموعه نویسه دارای پسوند .txt هستند که نباید در خط فرمان یا فایلهای پیکربندی ذکر شود.
توجه داشته باشید که catdoc به صورت پیشفرض با مجموعههای نویسه سیریلیک توزیع میشود. اگر به این مجموعهها نیاز ندارید، باید catdoc را در زمان کامپایل یا در فایل پیکربندی زمان اجرا بازپیکربندی کنید.
هنگام کار با اسنادی که مجموعههای نویسه متفاوتی از پیشفرض دارند، به یاد داشته باشید که مایکروسافت هرگز از مجموعههای نویسه ISO استفاده نمیکند. اگرچه حروف در مثلاً cp1252 در همان موقعیت ISO-8859-1 قرار دارند، اما در صورت تعیین ISO-8859-1 به عنوان مجموعه نویسه ورودی، برخی از علائم نگارشی از بین میروند. اگر از cp1252 استفاده کنید، catdoc با آن نشانهها همانگونه که در بخش «جایگزینی نویسهها» در ادامه آمده رفتار خواهد کرد.
جایگزینی نویسهها (CHARACTER SUBSTITUTION)
برنامه catdoc فایل MS-Word را به نمایش یونیکد داخلی زیر تبدیل میکند:
- ۱. پاراگرافها با نویسه تغذیه خط اسکی (ASCII Line Feed با کد 0x000A) از هم جدا میشوند.
- ۲. سلولهای جدول درون یک سطر با نویسه جداکننده فیلد اسکی (ASCII Field Separator با کد 0x001C) از هم جدا میشوند.
- ۳. سطرهای جدول با جداکننده رکورد اسکی (ASCII Record Separator با کد 0x001E) از یکدیگر تفکیک میشوند.
- ۴. تمام نویسههای قابل چاپ، شامل فاصلهها، با کدهای یونیکد مربوطهشان نمایش داده میشوند.
این نمایش یونیکد متعاقباً با استفاده از الگوریتم چهار مرحلهای زیر به متن ۸ بیتی در مجموعه نویسه مقصد تبدیل میشود:
- ۱. لیست نویسههای خاص برای نویسه یونیکد دادهشده جستجو میشود. در صورت یافتن، توالی چندنویسهای مناسب به جای نویسه در خروجی قرار میگیرد.
- ۲. اگر معادل آن در مجموعه نویسه مقصد وجود داشته باشد، همان در خروجی نوشته میشود.
- ۳. در غیر این صورت، لیست جایگزینی جستجو میشود و در صورت وجود جایگزینی چندنویسهای برای این نویسه یونیکد، آن جایگزین درج میشود.
- ۴. اگر همه موارد بالا ناموفق باشد، نماد «نویسه ناشناخته» (علامت سوال) در خروجی نوشته میشود.
لیستهای نویسههای خاص و لیست جایگزینی، مستقل از مجموعه نویسه هستند؛ زیرا نویسههای خاص باید صرفنظر از وجودشان در مجموعه نویسه مقصد اسکیپ شوند (معمولاً بخشی از US-ASCII هستند و در هر مجموعه نویسهای وجود دارند) و لیست جایگزینی تنها برای نویسههایی جستجو میشود که در مجموعه نویسه مقصد یافت نمیشوند.
این لیستها در پوشه کتابخانه catdoc در فایلهایی با پیشوند نام قالب ذخیره میشوند. این فایلها دارای قالب زیر هستند:
هر خط میتواند یک توضیح باشد (که با علامت هش شروع میشود) یا حاوی مقدار هگزادسیمال یونیکد باشد که با فاصله از رشتهای که باید جایگزین آن شود جدا شده است. اگر رشته بدون فاصله باشد میتواند به همان شکل استفاده شود؛ در غیر این صورت باید در گیومه تکی یا دوتایی قرار گیرد. توالیهای اسکیپ معمولی مانند '\n'و'\t' میتوانند در این رشتهها به کار روند.
پیکربندی زمان اجرا (RUNTIME CONFIGURATION)
در هنگام راهاندازی، catdoc ابتدا فایل پیکربندی سراسری سیستم (فایل catdocrc در پوشه کتابخانه catdoc) و سپس فایل پیکربندی اختصاصی کاربر ${HOME}/.catdocrc را میخواند.
این فایلها میتوانند حاوی دستورالعملهای زیر باشند:
- source_charset = charset-name
- مجموعه نویسه مبدا پیشفرض را تنظیم میکند که در صورت عدم تعیین گزینه -s استفاده خواهد شد. پیکربندی یک ایستگاه کاری ویندوز مجاور را بررسی کنید تا مورد نیاز خود را بیابید.
- target_charset = charset-name
- مجموعه نویسه خروجی پیشفرض را تعیین میکند. شما احتمالاً میدانید از کدام یک استفاده میکنید.
- charset_path = directory-list
- لیستی از پوشهها که با دونقطه (colon) جدا شدهاند و برای یافتن فایلهای مجموعه نویسه جستجو میشوند. این امکان به شما اجازه میدهد مجموعههای نویسه جدیدی را در پوشه خانگی خود نصب کنید. اگر اولین مؤلفه مسیر پوشه ~ باشد، با محتویات متغیر محیطی HOME جایگزین میشود. در پلتفرم MS-DOS، اگر نام پوشه با %s آغاز شود، با پوشه فایل اجرایی جایگزین خواهد شد. یک عنصر خالی در لیست (یعنی دو دونقطه متوالی) به عنوان دایرکتوری جاری در نظر گرفته میشود.
- map_path = directory-list
- لیستی از پوشهها که با دونقطه از هم جدا شدهاند و برای یافتن نگاشت نویسههای خاص و نگاشت جایگزینی جستجو میشوند. همان قوانین جایگزینی موجود در charset_path در اینجا نیز اعمال میشوند.
- format = format name
- قالب خروجی که به طور پیشفرض استفاده میشود. catdoc همراه با دو قالب ارائه میشود: ascii و tex اما هیچ مانعی برای نوشتن قالب اختصاصی خودتان وجود ندارد (تنظیم دو فایل نقشه: نقشه نویسههای خاص و نقشه جایگزینی).
- unknown_char = character specification
- نویسهای را تعیین میکند که باید به جای نویسه یونیکد ناشناخته چاپ شود (پیشفرض '?'). مشخصه نویسه میتواند یکی از دو حالت باشد: نویسهای که در گیومه تکی محصور شده یا کد هگزادسیمال.
- use_locale =(yes|no)
- انتخاب خودکار مجموعه نویسه خروجی را بر اساس تنظیمات محلی (locale) سیستم (در صورت فعال بودن در زمان کامپایل) فعال یا غیرفعال میکند (پیشفرض yes). اگر تشخیص خودکار فعال باشد، تنظیمات مجموعه نویسه خروجی در فایلهای پیکربندی (اما نه در خط فرمان) نادیده گرفته شده و از مجموعه نویسه محلی فعلی سیستم استفاده میشود. هیچ انتخاب خودکاری برای مجموعه نویسه ورودی بر اساس زبان محلی وجود ندارد، زیرا اکثر فایلهای مدرن Word (از زمان Word 97 به بعد) در هر صورت یونیکد هستند.
اشکالات (BUGS)
ذخیرههای سریع (fast-saves) را به درستی مدیریت نمیکند. پاورقیها را به جای تولید دستورات صحیح LaTeX، به عنوان پاراگرافهای جداگانه در انتهای فایل چاپ میکند. نمیتواند بین یک سلول خالی جدول و پایان یک سطر جدول تمایز قائل شود.
همچنین ببینید (SEE ALSO)
xls2csv(1), catppt(1), cat(1), strings(1), utf(4), unicode(4)
نویسنده (AUTHOR)
V.B.Wagner <vitus@45.free.net>
| Version @catdoc_version@ | MS-Word reader |