# NoteRich Rich Text مقابل Markdown: چگونه بین آن‌ها تغییر داده و استفاده کنیم در دنیای امروز برنامه‌های یادداشت‌برداری، کاربران اغلب مجبورند بین دو روش مختلف انتخاب کنند: قابلیت‌های بصری و نمایش دقیق متن در نسخه Rich Text و سادگی قابل حمل نسخه Markdown. اکثر برنامه‌ها از کاربران می‌خواهند که یکی از این دو روش را انتخاب کنند. **NoteRich** این تقسیم دوگانه را حل می‌کند. با استفاده از یک ساختار دوگانه پیشرفته، NoteRich امکان تغییر بی‌دردسر بین نسخه Rich Text و Markdown را فراهم می‌کند و بهترین ویژگی‌های هر دو را بدون هیچ مشکلی ارائه می‌دهد. --- ## درک دو حالت قبل از شروع به توضیح چگونگی تغییر بین حالت‌ها، مهم است که بدانیم هر حالت چه چیزی ارائه می‌دهد و چه زمانی باید از آن‌ها استفاده کرد. ### حالت Rich Text: قابلیت ویرایش بصری بهترین حالت Rich Text تجربه ویرایشی **WYSIWYG (آنچه که می‌بینید، همان چیزی است که خواهید داشت)** را ارائه می‌دهد. هنگامی که در حالت Rich Text هستید: - **فرمت‌بندی بصری**: حروف برجسته، کج، عناوین و فهرست‌ها دقیقاً همان‌طور که در نمایش واقعی خواهند بود، نمایش داده می‌شوند. - **دسترسی به ابزارهای فرمت‌بندی**: یک ابزار فرمت‌بندی جامع اجازه دسترسی یک‌کلیک به تمام گزینه‌های فرمت‌بندی را می‌دهد. - **گنجاندن تصاویر**: تصاویر، جداول، معادلات و عناصر تعاملی به صورت داخلی نمایش داده می‌شوند. - **انتقال و جابجایی**: با کشیدن بخش‌ها، می‌توانید محتوا را به راحتی بازتنظیم کنید. - **منوهای مربوطه**: اقدامات کلیک راست و ابزارهای فرمت‌بندی شناور، به بهره‌وری کار کمک می‌کنند. حالت Rich Text برای افرادی مناسب است که ترجیح می‌دهند هنگام تایپ کردن، بازخورد بصری داشته باشند: - کاربرانی که به فرمت‌بندی بصری اهمیت می‌دهند. - اسنادی که دارای چیدمان پیچیده‌ای هستند (جداول، چیدمان چندخطی). - جلسات ویرایشی مشترک که در آن‌ها وضوح بصری اهمیت دارد. - فرمت‌بندی سریع بدون نیاز به یادگیری ساختار نوشتاری. ### حالت Markdown: سادگی قابل حمل حالت Markdown محتوا را به صورت متن ساده با ساختار نوشتاری سبک نمایش می‌دهد. هنگام کار در حالت Markdown: - **قابلیت انتقال متن ساده**: یادداشت‌های شما در قالبی قابل خواندن توسط همه نگهداری می‌شوند. - **روال کار با کلیدهای صفحه**: فرمت‌بندی متن با استفاده از کلیدهای ساده صفحه کلید انجام می‌شود (`**bold**`, `*italic*`, `# Heading`). - **سازگاری با کنترل نسخه**: تفاوت‌های فرمتی تمیز در Git و سایر سیستم‌های کنترل نسخه. - **تایپ سریع**: نیازی به استفاده از ماوس نیست؛ دست‌های شما روی صفحه کلید باشد. - **سازگاری جهانی**: فایل‌های `.md` صادر و به اشتراک گذاشته می‌شوند و در هر جایی قابل استفاده هستند. حالت Markdown برای موارد زیر مناسب است: - مستندات فنی و یادداشت‌هایی که حاوی کد زیادی هستند. - نویسندگانی که ترجیح می‌دهند ویرایش متن ساده بدون حواس‌پرتی انجام شود. - ایجاد محتوای طولانی با کمترین هزینه فرمت‌بندی. - کاربرانی که به قابلیت انتقال بالا و آینده‌نگری اهمیت می‌دهند. --- ## ساختار دوگانه NoteRich نه تنها دو تجربه ویرایشی جداگانه ارائه می‌دهد، بلکه یک **مدل محتوای یکپارچه** ایجاد می‌کند که می‌توان آن را در هر دو فرمت نمایش داد. این کار از طریق یک موتور تبدیل پیشرفته انجام می‌شود که ساختار داخلی سند و ساختار Markdown را به صورت زمانی تبدیل می‌کند. ```mermaid graph TD A[Input کاربر] --> B{Model داخلی سند} B --> C[نمایش Rich Text] B --> D[نمایش Markdown] C --> E[اقدامات ابزار فرمت بصری] C --> F[عملیات انتقال و جابجایی] C --> G[فرمت منوهای مربوطه] D --> H[شناسایی کلیدهای Markdown] D --> I[تشخیص الگوهای ساختاری] D --> J[وارد/خروج متن ساده] B --> K[لایه ذخیره‌سازی یکپارچه] K --> L[پیداش در IndexedDB] K --> M[P2P Sync Payload] style A fill:#fafafa,stroke:#eaeaea,color:#333 style B fill:#000,stroke:#000,color:#fff style C fill:#fafafa,stroke:#eaeaea,color:#333 style D fill:#fafafa,stroke:#eaeaea,color:#333 style K fill:#000,stroke:#000,color:#fff ``` این ساختار به این معناست که **محتوایتان هرگز در یک فرمت نگه داشته نمی‌شود**. چه در حال تایپ کردن در Markdown باشید و چه از طریق ابزار فرمت‌بندی Rich Text، مدل داخلی سند همواره یکسان باقی می‌ماند و امکان تغییر بی‌دردسر بدون از دست دادن داده‌ها یا خراب شدن فرمت وجود دارد. --- ## چگونگی تغییر بین حالت‌ها ### روش ۱: انتخاب حالت بر اساس تنظیمات NoteRich یک تنظیم جهانی ارائه می‌دهد که حالت ویرایش پیش‌فرض برای تمام یادداشت‌ها را تعیین می‌کند: 1. **باز کردن تنظیمات**: کلیک روی آیکون چکش (⚙️) در گوشه بالا راست برنامه 2. **جستجوی “Rich Text”**: پیدا کردن گزینه “Rich Text” در پنل تنظیمات 3. **تغییر حالت**: - **فعال (✓)**: ویرایشگر در حالت Rich Text با کلیدهای فرمت کامل باز می‌شود. - **غیرفعال (○)**: ویرایشگر در حالت متن ساده/Markdown باز می‌شود. ```mermaid sequenceDiagram participant User participant SettingsPanel participant Editor participant DocumentModel User->>SettingsPanel: کلیک روی آیکون تنظیمات User->>SettingsPanel: تغییر حالت “Rich Text” SettingsPanel->>Editor: به روزرسانی گزینه isRichText Editor->>DocumentModel: بازنمایی مجدد با حالت جدید Editor-->>User: نمایش رابط به روزرسانی شده ``` **مهم**: تغییر این تنظیمات نیازمند باز کردن صفحه برای اثرپذیری است. این کار اطمینان حاصل می‌کند که تمام پلاگین‌ها و اجزای ابزار فرمت‌بندی برای حالت انتخاب شده به درستی آماده شوند. ### روش ۲: وارد/خروج یادداشت به Markdown حتی زمانی که عمدتاً در حالت Rich Text کار می‌کنید، می‌توانید یادداشت‌های جداگانه را به Markdown وارد و خروج کنید: #### خروج یادداشت به Markdown 1. باز کردن یادداشتی که می‌خواهید خروج کنید 2. کلیک روی **منو اقدامات** (معمولاً با سه نقطه `⋮` یا آیکون دانلود) 3. انتخاب **“Export as Markdown”** 4. یادداشت به ساختار Markdown تبدیل شده و به صورت فایل `.md` دانلود می‌شود. فرآیند خروج به طور هوشمندانه مدیریت می‌کند: - **عناوین**: به ساختار `#`, `##`, `###` تبدیل می‌شوند. - **فهرست‌ها**: فهرست‌های نقطه‌چین و شماره‌دار با فاصله مناسب حفظ می‌شوند. - **بلوک‌های کد**: توضیحات زبان حفظ می‌شوند (مثلاً ```javascript) - **جداول**: به صورت جداول Markdown با نشانگران هماهنگی - **لینک‌ها و تصاویر**: URL با متن جایگزین حفظ می‌شوند. #### وارد کردن محتوای Markdown 1. ایجاد یک یادداشت جدید یا باز کردن یک نسخه اولیه موجود 2. دسترسی به **فنکشن وارد** از منو اقدامات 3. انتخاب یک فایل `.md` یا کپی کردن متن Markdown مستقیماً 4. NoteRich به طور خودکار الگوهای Markdown را تشخیص داده و آن‌ها را به مدل داخلی سند تبدیل می‌کند. موتور وارد کردن از تشخیص الگوها برای شناسایی عناصر Markdown استفاده می‌کند: ```markdown Pattern → عنصر Rich Text -------------------------------------------------- # Heading 1 → گره H1 ## Heading 2 → گره H2 **bold text** → گره متن برجسته *italic text* → گره متن کج - List item → آیتم فهرست نقطه‌چین 1. Numbered item → آیتم فهرست شماره‌دار > Quote → گره نقل‌قول ```code``` → گره بلوک کد [Link](url) → گره لینک ![Image](url) → گره تصویر ``` ### روش ۳: کلیدهای Markdown در حالت Rich Text یکی از قابلیت‌های قدرتمند NoteRich، امکان استفاده از **کلیدهای Markdown حتی در حالت Rich Text** است. این روش ترکیبی به شما اجازه می‌دهد تا به طور طبیعی تایپ کنید و در عین حال از سرعت Markdown استفاده کنید. هنگامی که حالت Rich Text فعال باشد، تایپ کردن ساختار Markdown باعث تبدیل خودکار می‌شود: | تایپ کردن این | تبدیل به این | شرایط تحریک | |-----------------|-----------------|-----------------| | `# ` | H1 Heading | فاصله بعد از علامت | | `## ` | H2 Heading | فاصله بعد از دو علامت | | `### ` | H3 Heading | فاصله بعد از سه علامت | | `- ` یا `* ` | فهرست نقطه‌چین | فاصله بعد از نقطه/علامت | | `1. ` | فهرست شماره‌دار | فاصله بعد از عدد+نقطه | | `[] ` | فهرست چکیده | فاصله بعد از پرانتز | | `> ` | نقل‌قول | فاصله بعد از بیشتر | | ```` ``` ```` | بلوک کد | سه نقطه/علامت پشت | | `**text**` | **text برجسته** | پرانتز پشت | | `*text*` | *text کج* | پرانتز پشت | | `~~text~~` | ~~text~~ | پرانتز پشت | | `` `text`` | `inline code` | پرانتز پشت | | `[text](url)` | [لینک](url) | پرانتز پشت | | `---` یا `***` | خط افقی | سه نقطه/علامت پشت | ```mermaid graph LR A[User Types Markdown] --> B[Detector کلید] B -->|Pattern Matched| C[تبدیل به گره] B -->|No Match| D[حفظ به صورت متن ساده] C --> E[به روزرسانی حالت ویرایشگر] E --> F[نمایش Rich Text] style A fill:#fafafa,stroke:#eaeaea,color:#333 style B fill:#000,stroke:#000,color:#fff style C fill:#fafafa,stroke:#eaeaea,color:#333 style F fill:#fafafa,stroke:#eaeaea,color:#333 ``` این بدان معناست که می‌توانید از سرعت تایپ کردن Markdown و وضوح بصری Rich Text لذت ببرید—بدون نیاز به تغییر دائمی حالت‌ها. --- ## ویژگی‌های پیشرفته: عناصر چندخطی موتور Markdown NoteRich درک هوشمندانه‌ای از عناصر چندخطی دارد، به ویژه بلوک‌های کد و بلوک‌های نقل‌قول. ### تشخیص بلوک‌های کد ویرایشگر به طور هوشمندانه بین بلوک‌های کد تک‌خطی و چندخطی تفاوت قائل می‌شود: ```markdown Single-line: ```python print("Hello")``` → حاشیه بلوک کد Multi-line: ```python def hello(): print("Hello") ``` → گره کلید کد هنگام وارد کردن یا تایپ کردن بلوک‌های کد، NoteRich: 1. حاشیه باز شدن کد را تشخیص می‌دهد (``` + برچسب زبان) 2. تمام محتوا را تا حاشیه باز شدن کد دریافت می‌کند 3. فاصله‌بندی و فاصله فضا را دقیقاً همان‌طور که تایپ شده است حفظ می‌کند 4. بر اساس برچسب زبان، رنگ‌زدایی ساختار را اعمال می‌کند ### مدیریت فهرست‌های چندلایه فهرست‌هایی که سطوح مختلف فاصله‌بندی دارند، به درستی بازسازی می‌شوند: ```markdown - Item سطح 1 - Item سطح 2 (فاصله 4 خط) - Item سطح 3 (فاصله 8 خط) - بازگشت به سطح 1 ``` موتور تبدیل، سطوح فاصله‌بندی را محاسبه کرده و ساختار چندلایه فهرست را در مدل داخلی سند ایجاد می‌کند. --- ## ملاحظات عملکردی تبدیل دوطرفه بین Rich Text و Markdown برای عملکرد بهینه، حتی در مورد اسناد بزرگ، به کار رفته است. ### مقایسه تبدیل‌ها ```echarts { "xAxis": { "type": "category", "data": ["1k chars", "5k chars", "10k chars", "25k chars", "50k chars"], "axisLabel": { "color": "#666" } }, "yAxis": { "type": "value", "name": "Time (ms)", "splitLine": { "lineStyle": { "color": "#f4f4f5" } }, "axisLabel": { "color": "#666" } }, "series": [ { "name": "Markdown → Rich Text", "data": [8, 15, 22, 35, 48], "type": "line", "smooth": true, "lineStyle": { "color": "#000", "width": 3 }, "itemStyle": { "color": "#000" }, "symbol": "circle", "symbolSize": 8 }, { "name": "Rich Text → Markdown", "data": [5, 10, 16, 28, 38], "type": "line", "smooth": true, "lineStyle": { "color": "#666", "width": 2, "type": "dashed" }, "itemStyle": { "color": "#666" }, "symbol": "circle", "symbolSize": 8 } ], "grid": { "left": "10%", "right": "5%", "bottom": "10%" }, "legend": { "data": ["Markdown → Rich Text", "Rich Text → Markdown"], "bottom": 0, "textStyle": { "color": "#666" } } } ``` حتی در صورتی که اسناد بیش از 50,000 کاراکتر داشته باشند، تبدیل در کمتر از 50 میلیسانتری انجام می‌شود—که برای کاربران در حالت عادی غیرقابل تشخیص است. ### به‌روزرسانی تدریجی به جای بازنویسی کل سند در هر تایپ کردن، NoteRich از **تبدیل تدریجی** استفاده می‌کند: - **کلیدهای Markdown**: فقط خط فعلی برای شناسایی الگو بررسی می‌شود - **اقدامات ابزار فرمت‌بندی**: دستکاری مستقیم گره بدون بازنویسی کامل - **واردی بانداری**: فایل‌های بزرگ Markdown به صورت بخش‌هایی پردازش می‌شوند تا از مسدود شدن رابط کاربری جلوگیری شود --- ## بهترین روش‌های انتخاب حالت ### زمانی استفاده از حالت Rich Text حالت Rich Text را به عنوان حالت پیش‌فرض خود انتخاب کنید اگر: 1. **ضرورت چیدمان بصری وجود دارد**: ایجاد اسناد با جداول، تصاویر و فرمت‌بندی پیچیده 2. **کار مشترک**: اشتراک‌گذاری یادداشت‌ها با اعضای تیم که به ویرایش بصری علاقه دارند 3. **تغییرات مکرر در فرمت‌بندی**: استفاده از ابزار فرمت‌بندی برای تغییرات سریع 4. **مخاطبان غیرتخصصی**: آماده‌سازی محتوا برای خوانندگانی که با ساختار Markdown آشنا نیستند 5. **نیازهای قابلیت‌های ارتباطی**: استفاده از کرسر صفحه کلیدی که بهتر از ساختارهای متنی سازگار هستند ### زمانی استفاده از حالت Markdown حالت Markdown (یا متن ساده) را انتخاب کنید اگر: 1. **مستندات حاوی کد زیاد**: نوشتن راهنماهای فنی با مثال‌های کد زیاد 2. **تنظیم با کنترل نسخه**: ردیابی تغییرات در گسترش Git 3. **نوشتن بدون حواس‌پرتی**: ترجیح دادن رابط‌های کم‌تنها بدون ابزار فرمت‌بندی 4. **قابلیت انتقال چندپلتفورمی**: انتقال مکرر به ابزارهای متناسب با Markdown 5. **روال کار متمرکز بر کلید**: می‌خواهید همیشه دست‌هایتان روی صفحه کلید باشد ### روش ترکیبی: استراتژی کاربران ماهر بسیاری از کاربران با تجربه NoteRich از یک **روال کار ترکیبی** استفاده می‌کنند: 1. **تعیین حالت پیش‌فرض به Rich Text**: لذت بردن از کلیدهای فرمت‌بندی کامل و بازخورد بصری 2. **استفاده از کلیدهای Markdown**: تایپ کردن `#`, `-`, `**text**` برای فرمت‌بندی سریع 3. **خروج به Markdown**: اشتراک‌گذاری نسخه‌های قابل حمل در صورت نیاز 4. **وارد کردن فایل‌های Markdown**: وارد کردن محتوای خارجی به راحتی این روش، سرعت تایپ کردن و وضوح بصری را به حداکثر می‌رساند و از نقاط قوت هر دو حالت استفاده می‌کند. --- ## رفع مشکلات رایج ### مشکل: کلیدهای Markdown تحریک نمی‌شوند **علائم**: تایپ کردن `#` یا `-` تبدیل به عنوان عنوان یا فهرست نمی‌شود **راه‌حل‌ها**: 1. بررسی اینکه حالت Rich Text فعال است (بررسی پنل تنظیمات) 2. اطمینان از فعال بودن پلاگین کلیدهای Markdown 3. بررسی وجود پلاگین‌های اشتباه در مرورگر 4. امتحان کردن اضافه کردن یک فاصله بعد از نماد Markdown ### مشکل: از دست رفتن فرمت هنگام خروج **علائم**: فایل خروجی Markdown فاقد برخی فرمت‌ها می‌شود **راه‌حل‌ها**: 1. برخی ویژگی‌های پیشرفته (رنگ‌های سفارشی، ویجت‌های کاملاً) ممکن است برای Markdown معادل نداشته باشند 2. بررسی فایل خروجی برای وجود عناصر غیرمتنی 3. استفاده از خروج HTML برای اسناد پیچیده با ساختار سفارشی ### مشکل: وارد کردن ساختار غیرمنتظره **علائم**: وارد کردن Markdown با ساختار غیرمنتظره‌ای همراه است **راه‌حل‌ها**: 1. بررسی اینکه ساختار Markdown مطابق با مشخصات CommonMark باشد 2. بررسی اینکه فهرست‌ها در ساختار نامتناسب هستند 3. اطمینان از بسته شدن صحیح حاشیه بلوک‌های کد 4. آزمایش با بخش‌های کوچکتر برای شناسایی ساختار مشکل‌دار ### مشکل: عملکرد کند با اسناد بزرگ **علائم**: تایپ کردن یا تغییر حالت در یادداشت‌های بسیار طولانی کند است **راه‌حل‌ها**: 1. فعال کردن تبدیل تدریجی در تنظیمات 2. تقسیم یادداشت‌های بسیار طولانی به یادداشت‌های جزئی مرتبط 3. غیرفعال کردن پلاگین‌های غیرضروری برای حالت متن ساده 4. استفاده از حالت Markdown برای تایپ کردن اولیه، و استفاده از Rich Text برای فرمت‌بندی نهایی --- ## آینده تغییرات دوگانه ساختار دوگانه NoteRich تغییر اساسی در نحوه فکر کردن ما درباره ویرایش سند ایجاد می‌کند. به جای تفکر دوگانه بین Rich Text و Markdown، NoteRich آن‌ها را به یک **مدل محتوای یکپارچه و انعطاف‌پذیر** تبدیل می‌کند که با روال کار شما سازگار است. توسعه‌های آینده شامل: - **تنظیمات برای هر یادداشت**: تغییر حالت پیش‌فرض برای یادداشت‌های جداگانه - **همکاری زمانی**: مشاهده فوری کلیدهای Markdown توسط همکاران - **تبدیل کمک‌رابطه‌ای**: پیشنهادات هوشمندانه برای بهینه‌سازی انتخاب فرمت - **تبدیل‌کننده‌های سفارشی**: تعریف رابط‌های خود برای تبدیل Markdown به Rich Text --- ## نتیجه انتخاب بین Rich Text و Markdown نباید یک گزینه‌ی یک‌جانبه باشد. با استفاده از ساختار دوگانه نوآورانه NoteRich، شما: ✅ **غنای بصری** را در زمان نیاز خود تجربه می‌کنید ✅ **سادگی متن ساده** را در زمان مورد نظر خود استفاده می‌کنید ✅ **تبدیل بی‌دردسر** بین هر دو حالت را دارید ✅ **کلیدهای Markdown** در حالت Rich Text ✅ **سازگاری کامل** با ابزارهای خارجی Markdown چه شما یک نویسنده که کد را مستندسازی می‌کنید، چه یک نویسنده که محتوای طولانی می‌نویسید، چه یک کارمندی که پروژه‌های پیچیده را مدیریت می‌کنید، NoteRich با روال کار شما سازگار است—بدون اینکه مجبور شوید هیچ چیز را فدا کنید. شروع کنید با حالتی که برای شما طبیعی باشد، امتحان کنید کلیدهای Markdown را و، بهترین تعادل را برای نیازهای شخصی خود پیدا کنید. یادداشت‌های شما، به شکل شما خواهد بود. --- ##