به دلیل قطعی اینترنت و نبود دسترسی به ایمیل‌های خارجی، می‌توانید بدون نیاز به تایید ایمیل، ثبت‌نام کنید و پرسش‌های خود را بپرسید.

اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
0 رای
5.4k بازدید

سلام دوستان.
امروز که مطالب سایت رو نگاه می‌کردم یکی از دوستان سؤالی در مورد نوشتن نامه اداری داشتند.
یکی از دوستان لطف کرده و کد زیر رو در جواب سؤال قرار داده بودند

\documentclass{letter}
\usepackage{fancyhdr}
\usepackage[headheight = 3cm,headsep=1cm]{geometry}

\usepackage{xepersian}
\settextfont{Yas}

\fancypagestyle{plain}{
\fancyhf{}
\fancyhead[L]{\includegraphics[height=5mm]{example-image-a}}
}
\fancypagestyle{empty}{
\fancyhf{}
\fancyhead[R]{\includegraphics[height=0.5in, keepaspectratio=true]{example-image-a}}
\fancyhead[L]{
\begin{minipage}{.2\textwidth}
تاریخ: 26/6/1394 
\\
شماره: 
123456
\end{minipage}
}
}
\renewcommand{\headrulewidth}{0pt}
\pagestyle{plain}



%%%%%%%%%%%%
\name{سید احمد}
\signature{موسوی}
\address{
دانشگاه .... \\دانشکده ریاضی و علوم کامپیوتر\\
}
%\date{} %اگر کامنت را حذف کنید تاریخ را نخواهید داشت.

\begin{document}

\begin{letter}{}
\opening{جناب آقای....}

سلام علیکم؛\\
متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن 


\closing{با احترام :}
\encl{جزییات به پیوست می‌باشد.}

\end{letter}
\end{document}

که خروجیش هم به صورت زیر هست:
enter image description here

الان شما فرض کنید ما می‌خواهیم این نامه رو به صد نفر ارسال کنیم و تنها چیزی که در نامه‌ها تغییر خواهد کرد شماره نامه و اسم شخصی است که مخاطب نامه می‌باشد. مثلاً قرار است شماره از یک عدد خاص شروع شود و در نامه بعدی یک واحد به آن افزوده شود و به همین ترتیب تا آخر ادامه یابد.

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

الان سؤالم اینه. در کدی که برای نوشتن نامه ارائه شده است این امکان وجود داره که کاری مشابه کاری که با اکسل و ورد انجام دادیم انجام بدیم و با یک بار پردازش از یک متن بتونیم صد تا نامه مورد نظر رو تولید کنیم و پرینت بگیریم؟

اگر چنین امکانی وجود داره در آن صورت اسم اشخاص رو باید چطوری نوشت و شماره نامه‌رو چطوری و با چه دستوری باید وارد کرد؟

(درسته با ورد الان این کار رو انجام میدم ولی یه حسی بهم میگه بهتره با لاتک اینکارو انجام بدم :) )

اگر دوستان اطلاعاتی دارند ممنون میشم راهنمایی کنند.

سلام ، سوال من اینه که این کدو باید کجا اجرا کنیم راستش اصلا مراحلشو نمی دونم اگر امکانش هست از دوستان برام گام به گام توضیحاتشو بزارین
توسط (5 امتیاز) 1 نشانه گذاری شده

2 پاسخ

0 رای
 
بهترین پاسخ

با سلام
با کمی ماکرونویسی می‌شه این کار رو کرد.

\documentclass{letter}
\usepackage{fancyhdr}
\usepackage[headheight = 3cm,headsep=1cm]{geometry}

\usepackage{xepersian}
\settextfont{HM XNiloofar}

\fancypagestyle{plain}{
\fancyhf{}
\fancyhead[L]{\includegraphics[height=5mm]{example-image-a}}
}
\fancypagestyle{empty}{
\fancyhf{}
\fancyhead[R]{\includegraphics[height=0.5in, keepaspectratio=true]{example-image-a}}
\fancyhead[L]{
\begin{minipage}{.2\textwidth}
تاریخ: 26/6/1394 
\\
شماره: 
\NO
\end{minipage}
}
}
\renewcommand{\headrulewidth}{0pt}
\pagestyle{plain}



%%%%%%%%%%%%
\name{سید احمد}
\signature{موسوی}
\address{
دانشگاه .... \\دانشکده ریاضی و علوم کامپیوتر\\
}
%\date{} %اگر کامنت را حذف کنید تاریخ را نخواهید داشت.


\def\newletter#1#2{\xdef\NAME{#1}  \xdef\NO{#2}\Letter\clearpage}

\def\Letter{
\begin{letter}{}
\opening{ \NAME}

سلام علیکم؛\\
متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن متن 


\closing{با احترام :}
\encl{جزییات به پیوست می‌باشد.}
\end{letter}
}

\begin{document}
\newletter{ سرکار خانم پروین}{A223322}
\newletter{جناب آقای فرشاد}{B/1235}
\end{document}

من یک روش رو اینجا آوردم. حتما روش‌های بهتری هم هست.

این برام خیلی جالب بود. ممنون :)
توسط (759 امتیاز)
+2 رای

بسته csvsimple می‌تواند به کمک شما آید.
شما باید یک فایل csv درست کنید --این کار را با اکسل یا حتی به صورت دستی نیز می‌توانید انجام دهید؛‌ بدین صورت که فایل متنی ساده ایجاد کنید و در سطر اول نام ستون‌ها را در حالیکه با کاما از هم جداشده‌اند بنگارید و در سطور بعدی نیز داده‌ها را که آن‌ها نیز با کاما باید از هم جدا شده باشند--.

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

سپس با بکار بردن دستورات ذیل به هدفتان نائل شوید:

دستور ذیل برای لود بسته

\usepackage{csvsimple}

حال فرض می‌کنیم که نام فایل csv شما برای مثال test.csv باشد.
با کمک دستور \csvreader می‌توانید به هدفتان نائل آیید.

\csvreader{test.csv}
{1=\name,2=\letternumber}
{\myletter{\name}{\letternumber}}

بجای اعداد 1 و 2 می‌توانید نام ستون‌های داده فایل csv را قرار دهید و متغیرهایی که جلوی این اعداد قرار می‌گیرند حاوی مقادیر سطرها می‌شوند. در اینجا \myletter مثلا دستوری است که شامل تمپلیت نامه شما می‌باشد. این دستور خودش یک حلقه زده و روی کل فایل حرکت می‌کند.

برای توضیحات و مثال‌های به مستندات بسته مراجعه کنید.

اگر توضیحات گویا نبود بفرمایید تا برایتان مثالی قرار دهم.

خیلی قشنگ بود. ممنون از این راهنمایی.
توسط (2.8k امتیاز)
پرسیدن سوال
سایت پرسش و پاسخ پارسی‌لاتک جایی برای پرسش و پاسخ درباره سیستم حروف‌چینی لاتک و بسته زی‌پرشین است. در اینجا می‌توانید سوال‌های خود را بپرسید و به سوال‌های دیگران پاسخ دهید.

7.2k پرسش

6.6k پاسخ

23.7k نظر

11.7k کاربر

basket cart icon

محصولات مرتبط با LaTeX

در فروشگاه پارسی‌لاتک


basket cart icon

حمایت مالی از پارسی‌لاتک

برای تامین هزینه‌های نگه‌داری و به‌روزرسانی

محبوب‌ترین برچسب‌ها

رفع خطا جدول xepersian مراجع ریاضی‌نویسی bidi شکل فونت فهرست مطالب شماره‌گذاری منابع پانویس tikz parsilatex بیب‌تک تک‌لایو بیمر اسلاید زی‌پرشین پاورقی سربرگ bibtex نماد رسم شکل فرمول‌نویسی هدر ارجاع‌دهی biditexmaker ویرایشگر قالب beamer واژه‌نامه texstudio اندازه فونت عنوان فصل ماتریس شماره صفحه اعمال نشدن تغییرات در پی‌دی‌اف رسم جدول bidipresentation حاشیه رنگ عنوان شکل اسلاید فارسی محیط قضیه گراف حروف‌چینی کد مکان شکل شماره فصل enumerate tabriz_thesis tikzpicture نمایه align زیرنویس شکل کادر itemize الگوریتم فهرست اشکال listings عدم اجرا نیم‌فاصله فاصله بین خطوط متن لاتین و فارسی hyperref بسته قالب پایان‌نامه فرمول نصب تک‌لایو فارسی‌تک نمودار شماره فرمول glossaries کپشن حروف‌چینی چندستونی خروجی فونت فارسی و انگلیسی ماکرونویسی extrafootnotefeatures لاتک biditools شماره پاورقی پیوست‌ سوال امتحانی فاصله‌گذاری فرمول چندضابطه‌ای tex subfigure biditufte-book header texmaker pdf خطا longtable تصویر شمارنده زیرنویس texlive2015 دیاگرام میک‌تک رسم نمودار شماره‌گذاری صفحات پایان نامه فهرست جداول تورفتگی texlive2016 شعر بولد آکولاد kashida میکروسافت ورد تنظیم جدول سوال چهارگزینه‌ای قاب texworks caption اندیس فاصله عمودی lollipop چپ‌چینی iust-thesis multicol فصل‌نویسی tcolorbox اعداد فارسی pgfplots xindy اوبونتو geometry xelatex texlive کاما fancyhdr وسط‌چینی تک لایو 2015 شماره گذاری به‌روزرسانی بسته aimc46 شکست خط صفر توخالی فرمول طولانی قالب کتاب فونت اعداد بیرون‌زدگی bidipoem عنوان بخش پوستر فاصله سطرها نوشتافت tex-programming قرآن tabriz-thesis ایتالیک winedt جستجوی معکوس فلش جایابی تصویر فهرست تصاویر پاراگراف‌بندی بازیابی اطلاعات هایپرلینک فهرست نمادها شمارنده فصل حروف‌چینی شعر font محیط ریاضی minipage رسم کادر جداکننده جدول طولانی به‌روزرسانی شماره‌گذاری فرمول algorithm2e proof equation eps جدول افقی tabular عکس متن فارسی و انگلیسی پانویس چندستونی کمک مالی فاصله خطوط فونت بولد زیرشکل پانویس پاراگرافی ltrfootnote پیوست computeautoilg فرمول چندخطی persian-bib neveshtuft غلط‌گیری املایی فونت ریاضی پیکان لاتکس قلم baselineskip شماره قسمت عنوان جدول
...