• Welcome to پارسی‌لاتک.
 
از تاریخ ۱۳۹۳/۸/۱۴ به دلیل ارائه خدمات بهتر به سایت جدید پرسش و پاسخ مهاجرت کرده‌ایم؛ از این رو امکان عضویت و ارسال پست در تالار غیرفعال شده است. لطفاً برای پرسیدن سوال‌های خود به سایت جدید مراجعه کنید.

ورود به سایت جدید

راست‌چین کردن سطرهای تک‌میکر که کاراکتر اول‌شان فارسی نیست

نویسنده هادی صفی‌اقدم, سپتامبر 01, 2010, 11:40:18 قبل از ظهر

« قبلی - بعدی »

هادی صفی‌اقدم

به سطر زیر نگاه کنید:
(۱) تابع $f$‌ را می‌توان....
در پنجره تکمیکر تا قبل از تایپ «تابع» متن تایپ شده به صورت چپ‌چین است. اما بعد از تایپ اولین کاراکتر فارسی یعنی «ت‌»، سطر فوق، راست‌چین می‌شود.

می‌خواهم ببینم آیا کاراکتری هست که اول آن را قبل از تایپ «(۱)» تایپ کرد و خود به خود راست‌چین شود. کاراکتری مثل فاصله مجازی یا نیم‌فاصله و ... که در خروجی هم نمایان نشود.

این مورد از طرف کاربران زی‌پرشین خیلی به من گفته شده و از این حالت می‌نالند. خیلی از کاربران هم به سختی با این حالت کنار می‌آیند و بعضی بیخیالش می‌شوند.

با تشکر قبلی

سید مهدی موسوی

نقل قول از: هادی صفی اقدم در سپتامبر 01, 2010, 11:40:18 قبل از ظهر
به سطر زیر نگاه کنید:
(۱) تابع $f$‌ را می‌توان....
در پنجره تکمیکر تا قبل از تایپ «تابع» متن تایپ شده به صورت چپ‌چین است. اما بعد از تایپ اولین کاراکتر فارسی یعنی «ت‌»، سطر فوق، راست‌چین می‌شود.

می‌خواهم ببینم آیا کاراکتری هست که اول آن را قبل از تایپ «(۱)» تایپ کرد و خود به خود راست‌چین شود. کاراکتری مثل فاصله مجازی یا نیم‌فاصله و ... که در خروجی هم نمایان نشود.

این مورد از طرف کاربران زی‌پرشین خیلی به من گفته شده و از این حالت می‌نالند. خیلی از کاربران هم به سختی با این حالت کنار می‌آیند و بعضی بیخیالش می‌شوند.

با تشکر قبلی
این کار ایرادی داره؟
حین تایپ هم اگر نیازی بود از چپ به راست نوشته بشه مشکل با ctrl+shift حل می‌شه.
همیشه سخت‌ترین کارها آنهایند که ما در یافتن راه‌های ساده برای انجام آنها کوتاهی کرده‌ایم.

هادی صفی‌اقدم

نقل قول از: سید مهدی موسوی در سپتامبر 01, 2010, 12:13:21 بعد از ظهر
این کار ایرادی داره؟
این جوری درمواردی که فرمول ریاضی به صورت Display mode داریم و داخل فرمول‌ها، کلمه فرسی داریم، اونها را هم راست چین می‌کند و برای من جالب نیست. مثل:

$$f(x)=0 \text{آنگاه } g(x)=0$$

سید مهدی موسوی

نقل قول از: سید مهدی موسوی در سپتامبر 01, 2010, 12:20:50 بعد از ظهر
راه حل این مطلب هم خیلی ساده و سریعه یادم رفت بگم فقط ctrl+shift چپ و باید استفاده کنید.
بهتره بگم با استفاده از این تنظیم از هر طرف که بخواین بنویسین از دو تا کلید همون طرف بایست استفاده کنین.
همیشه سخت‌ترین کارها آنهایند که ما در یافتن راه‌های ساده برای انجام آنها کوتاهی کرده‌ایم.

هادی صفی‌اقدم

نقل قول از: سید مهدی موسوی در سپتامبر 01, 2010, 12:20:50 بعد از ظهر
راه حل این مطلب هم خیلی ساده و سریعه یادم رفت بگم فقط ctrl+shift چپ و باید استفاده کنید.
میخام بدون زدن ctrl + shift این انجام شود.

برای روشن شدن موضوع:
وقتی پنجره ‌تک‌میکر را باز کرده و داخلش کلیک می‌کنید، مکاننما چپ چین هست
اگر اولین حرفی که می‌زنید فارسی باشد، مکاننما به صورت اتوماتیک، راست چین می‌شود
اگر اولین حرفی که می‌زنید، انگلیسی باشد، مکاننما به صورت اتوماتیک، چپ چین می‌شود.
اما اگر مثلا (۱) باشد، چپ چین می‌ماند. اگر در ادامه‌اش کاراکتر فارسی بزنید، راست‌چین می‌شود. اگر کاراکتر انگلیسی بزنید، چپ چین میشود.حال مسئله اینجاست که اگر بعدش دوباره جمله فارسی باشد باید راست‌چین شود که نمی‌شود

هادی صفی‌اقدم

یک پیشنهاد:
مثلا اگر امکانش باشه آقای سید رضی علوی‌زاده در تک‌میکر تعریف کنند که هر جا اول یک سطری «فاصله فارسی» زدیم اون سطر راست چین بشه خیلی عالی میشه.

سیدرضی علوی‌زاده

نقل قول از: هادی صفی اقدم در سپتامبر 01, 2010, 11:40:18 قبل از ظهر
این مورد از طرف کاربران زی‌پرشین خیلی به من گفته شده و از این حالت می‌نالند. خیلی از کاربران هم به سختی با این حالت کنار می‌آیند و بعضی بیخیالش می‌شوند.
با چه حالتی؟ یعنی فقط همینکه سه کاراکتر (۱) در سمت چپ است و بعد راست‌چین می‌شود این‌قدر مشکل است!!

نقل قول از: هادی صفی اقدم در سپتامبر 01, 2010, 12:16:02 بعد از ظهر
این جوری درمواردی که فرمول ریاضی به صورت Display mode داریم و داخل فرمول‌ها، کلمه فرسی داریم، اونها را هم راست چین می‌کند و برای من جالب نیست. مثل:

$$f(x)=0 \text{آنگاه } g(x)=0$$

قبلا هم گفتم بهترین کار برای حالات پیچیده‌تر شبیه به این موردی که گفتید ( متن فارسی در داخل دستور لاتک ) استفاده از insert LTR text است.

نقل قول از: هادی صفی اقدم در سپتامبر 01, 2010, 12:30:10 بعد از ظهر
اما اگر مثلا (۱) باشد، چپ چین می‌ماند. اگر در ادامه‌اش کاراکتر فارسی بزنید، راست‌چین می‌شود. اگر کاراکتر انگلیسی بزنید، چپ چین میشود.حال مسئله اینجاست که اگر بعدش دوباره جمله فارسی باشد باید راست‌چین شود که نمی‌شود
میشه بگید اینکه گفتید «اگر کاراکتر انگلیسی بزنید، چپ چین میشود.» در چه حالتی اتفاق می‌افتد!؟ ( چون دو حالت خودکار داریم یا بر مبنای اولین حرف جهت خط تعیین می‌شود یا برمبنای وجود حداقل یک کاراکتر از راست به چپ و حالتی نداریم که برای تایپ هر کاراکتر جهت خط عوض شود!! )

نقل قول از: هادی صفی اقدم در سپتامبر 01, 2010, 01:43:28 بعد از ظهر
یک پیشنهاد:
مثلا اگر امکانش باشه آقای سید رضی علوی‌زاده در تک‌میکر تعریف کنند که هر جا اول یک سطری «فاصله فارسی» زدیم اون سطر راست چین بشه خیلی عالی میشه.


اولا که در یک ویرایشگر استاندارد یونیکد چیزی به نام «فاصله فارسی» نداریم.
دوما شخصا موافق نیستم.
سوما اگر نظر دوستان به این شکل است می‌توانیم از همان کاراکتر «نیم فاصله» استفاده کنیم.

توجه: در ضمن دوستان اگر نظری دارند سریعتر بگن، چون بعلت رفع یک باگ اساسی در  همین چند روز آینده تک‌میکر دوجهته را بروز خواهم کرد.

هادی صفی‌اقدم

من در حالت First Strong character (LTR) کار می‌کنم
نقل قول از: سیدرضی علوی‌زاده در سپتامبر 02, 2010, 01:30:47 قبل از ظهر
با چه حالتی؟ یعنی فقط همینکه سه کاراکتر (۱) در سمت چپ است و بعد راست‌چین می‌شود این‌قدر مشکل است!!
نه. حالتی که اول (۱) را تایپ کنیم و بعد کاراکتر انگلیسی باشد. مثل:
(۱) f(x) تابع زوج است....
از اینگونه موارد می‌نالند. کل درخواستم روی این است که مثلا یک کاراکتر قبل از همه زده بشه یا بعد از (۱) که راست چین شود. چون داریم سطر فارسی تایپ می‌کنیم.
نقل قول از: سیدرضی علوی‌زاده در سپتامبر 02, 2010, 01:30:47 قبل از ظهر
قبلا هم گفتم بهترین کار برای حالات پیچیده‌تر شبیه به این موردی که گفتید ( متن فارسی در داخل دستور لاتک ) استفاده از insert LTR text است.
ممنون. یا من ندیده بودم یا دقت نکرده ام. شرمنده
نقل قول از: سیدرضی علوی‌زاده در سپتامبر 02, 2010, 01:30:47 قبل از ظهر
میشه بگید اینکه گفتید «اگر کاراکتر انگلیسی بزنید، چپ چین میشود.» در چه حالتی اتفاق می‌افتد!؟ ( چون دو حالت خودکار داریم یا بر مبنای اولین حرف جهت خط تعیین می‌شود یا برمبنای وجود حداقل یک کاراکتر از راست به چپ و حالتی نداریم که برای تایپ هر کاراکتر جهت خط عوض شود!! )
ببخشید کمی بد توضیح دادم.
متن زیر دقت کنید:
(۱) f(x) تابع زوج است....
این یک سطر فارسی بود که باید راست چین شود ولی چپ چین می‌شود.
چون:
(۱) فارسی است (از نظر من)
f(x) انگلیسی است
اما سطر چپ چین می‌شود!!
نقل قول از: سیدرضی علوی‌زاده در سپتامبر 02, 2010, 01:30:47 قبل از ظهر
دوما شخصا موافق نیستم.
هر طور نظر شماست سید رضی جان. اما اگر به عنوان یک option انتخابی باشد کار ما هم راه می‌افتد. البته اگر صلاح بدانید. متشکرم
نقل قول از: سیدرضی علوی‌زاده در سپتامبر 02, 2010, 01:30:47 قبل از ظهر
سوما اگر نظر دوستان به این شکل است می‌توانیم از همان کاراکتر «نیم فاصله» استفاده کنیم.
نیم فاصله هم جالب هست. اگر همین کار را انجام بدهید خیلی عالی می‌شود و من شرمنده‌ی شما

واقعا متشکرم که اینقده به درخواست من اهمیت دادید. متشکرم.
واقعا خیلی از دانشجویان دانشگاهمان از این موضوع می نالند و بعضی ها مسخره می کنند. >:( >:( اگر این هم اضافه بشه خیلی عالی میشه.

هادی صفی‌اقدم

یک مورد دیگه را هم الان یادم اومد.
در مواردی که اول سطر باید یک کلمه فارسی را Bold بنویسیم هم باید سطرها راست چین شود که نمی‌شود.
مثل:

‎\textbf{آزمون مقایسه:}‎‎ اگر داشته باشیم ادامه متن

که خروجیش به صورت زیر است:
آزمون مقایسه: اگر داشته باشیم ادامه متن

سیدرضی علوی‌زاده

نقل قول از: هادی صفی اقدم در سپتامبر 02, 2010, 05:04:15 قبل از ظهر
بخشید کمی بد توضیح دادم.
متن زیر دقت کنید:
(۱) f(x) تابع زوج است....
این یک سطر فارسی بود که باید راست چین شود ولی چپ چین می‌شود.
چون:
(۱) فارسی است (از نظر من)
f(x) انگلیسی است
اما سطر چپ چین می‌شود!!

نقل قول از: هادی صفی اقدم در سپتامبر 02, 2010, 05:44:11 قبل از ظهر
یک مورد دیگه را هم الان یادم اومد.
در مواردی که اول سطر باید یک کلمه فارسی را Bold بنویسیم هم باید سطرها راست چین شود که نمی‌شود.
مثل:

‎\textbf{آزمون مقایسه:}‎‎ اگر داشته باشیم ادامه متن

که خروجیش به صورت زیر است:
آزمون مقایسه: اگر داشته باشیم ادامه متن
خوب این مواردی که می‌گویید هیچ‌کدام در حالت «At Least One Strong Character» اتفاق نمی‌افتد، چرا از آن حالت استفاده نمی‌کنید؟

نقل قول از: هادی صفی اقدم در سپتامبر 02, 2010, 05:04:15 قبل از ظهر
نقل قول از: سیدرضی علوی‌زاده در سپتامبر 02, 2010, 01:30:47 قبل از ظهر
دوما شخصا موافق نیستم.
هر طور نظر شماست سید رضی جان.
این را که گفتم فقط برای این بود که بعنوان یکی از کاربران نظرم را گفته باشم! نه اینکه بگم همینه که هست  ;)

نقل قول از: هادی صفی اقدم در سپتامبر 02, 2010, 05:04:15 قبل از ظهر
نیم فاصله هم جالب هست.
و آیا در کل این مشکل فقط در مورد اعداد است؟ اگر اینطور باشد یک راه‌حل هم این است که اعداد را بعنوان کاراکتر «راست به چپ» معرفی کنیم و دیگر نیازی به کاراکتری اضافه نباشد!

هادی صفی‌اقدم

نقل قول از: سیدرضی علوی‌زاده در سپتامبر 02, 2010, 08:33:27 قبل از ظهر
خوب این مواردی که می‌گویید هیچ‌کدام در حالت «At Least One Strong Character» اتفاق نمی‌افتد، چرا از آن حالت استفاده نمی‌کنید؟
هر طور نظر شماست سید رضی جان.
به مثال زیر نگاه کنید: (یک سطر فرمول انگلیسی که وسط فرمول‌ها یک کلمه‌ی فارسی استفاده شده است)

$$  f(x) =0 \text{آنگاه}  g(x)=0$$


در حالت At least one strong character این مورد راست چین می‌شود ولی در صورتیکه سطر انگلیسی داریم.
نقل قول از: سیدرضی علوی‌زاده در سپتامبر 02, 2010, 08:33:27 قبل از ظهر
و آیا در کل این مشکل فقط در مورد اعداد است؟ اگر اینطور باشد یک راه‌حل هم این است که اعداد را بعنوان کاراکتر «راست به چپ» معرفی کنیم و دیگر نیازی به کاراکتری اضافه نباشد!
در مورد اینکه همه سطرهایی که اولشان به صورت (۱) را با تعریف (۱) به عنوان کاراکتر راست به چپ، خود به خود چپ‌چین شوند بیزحمت به مورد زیر نگاه کنید:

(1) f(x) = x2+3x+2


این سطر باید چپ‌چین باشد. (در صورتیکه اولین کاراکترش پرانتز یا به قول شما عدد هست) و اگر (۱) را کاراکتر راست به چپ معرفی کنید این سطر هم راست چین می‌شود در صورتیکه باید چپ چین باشد. چون سطر کاملا انگلیسی هست

به نظرم معرفی کاراکتر فاصله مجازی یا هر کاراکتری که راست به چپ معرفی شود (یعنی مثل یک حرف الفبای فارسی) و با زدن اون کاراکتر در اول سطرهای موردنظر ، راست چین شود خیلی خوب میشه.


ممنون بابت وقتی که بخاطر پیشنهاد من گذاشتید. متشکرم

سیدرضی علوی‌زاده

نقل قول از: هادی صفی اقدم در سپتامبر 02, 2010, 09:28:18 قبل از ظهر
به مثال زیر نگاه کنید: (یک سطر فرمول انگلیسی که وسط فرمول‌ها یک کلمه‌ی فارسی استفاده شده است)

$$  f(x) =0 \text{آنگاه}  g(x)=0$$


در حالت At least one strong character این مورد راست چین می‌شود ولی در صورتیکه سطر انگلیسی داریم.
درسته که راست‌چین می‌شود ولی با استفاده از insert LTR text حالت نمایشی درستی به خود می‌گیرد.

نقل قول از: هادی صفی اقدم در سپتامبر 02, 2010, 09:28:18 قبل از ظهر
در مورد اینکه همه سطرهایی که اولشان به صورت (۱) را با تعریف (۱) به عنوان کاراکتر راست به چپ، خود به خود چپ‌چین شوند بیزحمت به مورد زیر نگاه کنید:

(1) f(x) = x2+3x+2


این سطر باید چپ‌چین باشد. (در صورتیکه اولین کاراکترش پرانتز یا به قول شما عدد هست) و اگر (۱) را کاراکتر راست به چپ معرفی کنید این سطر هم راست چین می‌شود در صورتیکه باید چپ چین باشد. چون سطر کاملا انگلیسی هست
در این مورد یک راه حل این است که بین عدد فارسی «۱» و عدد انگلیسی «1» تفاوت قایل شویم که مشکل ذکر شده را حل می‌کند اما باز برای کاربرانی که از کیبورد غیراستاندارد استفاده می‌کنند که در حالت فارسی هم اعداد انگلیسی را در اختیار قرار می‌دهد مشکل پیش می‌آورد.

در کل فکر می‌کنم بهترین حالت استفاده از همان «نیم فاصله» باشد.

شهاب

من هم به شدت با موضوعی که هادی مطرح کردند، مشکل دارم به نظر من  هم اگه با زدن  همان نیم فاصله ، محیط راست چین بماند (نه اینکه راست چین شود و دوباره برگردد طرف چپ) خیلی خیلی عالی میشود دوستان من هم با این مطلبی که هادی مطرح کرده اند، مشکل دارند
با تشکر
خدایا تو چه بی منتها می بخشی، و ما چه حسابگرانه تسبیح می گوییم!

هادی صفی‌اقدم

دکمه space فارسی (زدن فاصله وقتی که کیبورد فارسی است) گزینه‌ی خوبی برای راست‌چین کردن سطرهایی که کاراکتر اولشان انگلیسی و بقیه فارسی هستند می‌باشد؟

سروش

استنباط خودم از موضوع رو این زیر نوشتم اگه درست متوجه نشدم لطفاً بگید. (البته یه خورده پابرهنه میپرم وسط...)

تا اینجا اگه درست متوجه شده باشم دارید دنبال یه الگوریتم مناسب برای پیاده‌سازی Bi-directionality در محیط ادیتور می‌گردید.
مسلماً هر ترتیب یا قاعده‌ای که مشخص بشه باز هم راضی‌کننده نخواهد بود و نیاز هست که جهت متن (نه تراز متن) مشخص بشه. مثلاً برای فرمول‌ها لازمه که از راست به چپ جهت‌گیری داشته باشن و برای متون پاراگراف‌ها (حتی اگر اولشون با حرف لاتین شروع بشه) از راست به چپ تراز انجام بشه. و همین‌طور برای پاراگراف‌های غیر فارسی از چپ به راست.

نتیجه‌ای که می‌تونیم بگیریم اینه که همۀ عوامل تعیین کننده برای مشخص شدن جهت، سمانتیک هستند و بدون درک متن و تشخیص زبان موضعی نمی‌شه قاعده‌ای رو برای جهت‌دهی متون وضع کرد. بنابراین باید جهت به شکل صریح (explicit) تعیین بشه، نه با یک سری الگوریتم. پس کاربر باید تعیین کنه که متن از کجا جهت‌گیری کنه. و باید این تصمیم کاربر ذخیره بشه. از طرف دیگه plain text امکان این رو نداره که جهت رو مشخص کنه. (مثلاً مثل RTF یا HTML)

یه پیشنهاد:
همونطور که میدونید این مشکل قبلاً حل شده و نیازی نیست دوباره قراردادی رو برای تعیین جهت در plain text معین کنید. من میگم از همون روش استاندارد یونیکد استفاده کنید. یعنی اول هر سطر (پاراگراف متنی، منظورم متن بین دو u00A هست) یکی از کاراکترهای
Right to Left embedding U+2020B
یا
Left to Right embedding U+2020A
رو قرار بدید و با فشار دادن Ctrl+Shift در هر طرف از صفحه کلید، این نویسه‌های ابتدایی توسط ویرایشگر جایگزین بشن. این‌ها می‌تونن معین کنن که متن از کجا تراز شه. و موقع لود کردن فایل (یا کلاً رندر متن) این نویسه‌ها به عنوان جهت لحاظ بشن. و البته کاربر نتونه حذفشون کنه.

میمونه متون بین پاراگراف، که اونم با قرار دادن همین کاراکترها بین متون میشه حلش کرد. فقط باید یه لایۀ بالایی برای ویرایشگر نوشته بشه که این کارها رو به شکل گرافیکی انجام بده تا کاربر با مدیریت جهت متن درگیر نشه. مثلاً راهی که به ذهن من میرسه اینه که با تشخیص زبان سیستم عامل، و مدیریت تغییر زبان، نویسه‌های جهت مناسب بین متن درج بشن. شاید روش‌های strong-first که توی تک‌میکر نوشتید هم براش کارساز باشه. یا اینکه ادیتور جهت‌های مخالف جریان کلی رو هایلایت کنه. (فکر نکنم با کیوتی زیاد سخت باشه چون توی TeXMakerX از این جور کارا زیاد انجام دادن).