برای اینکه بتونیم محتویات فایلی رو بخونیم یا اینکه روی فایلی چیزی بنویسیم، اول باید عددی رو به اون اختصاص بدهیم. برای خواندن فایل از دستور \newread و برای نوشتن روی فایل از دستور \newwrite استفاده میکنیم:
\newread\maintexin
\newwrite\maintexout
حالا باید فایلی رو که میخواهیم بخونیم و فایلی رو که میخواهیم روش بنویسیم باز و در پایان ببندیم:
\immediate\openout\maintexout=mythesis
\immediate\openin\maintexin=yazd-thesis
\immediate\closein\maintexin
\immediate\closeout\maintexout
تک دستور بدوی \read رو برای خواندن هر خط فایلی که میخواهیم بخونیم، در اختیار ما قرار میده. این دستور بدوی catcodeها رو تغییر نمیده و اگر خودمون catcodeها رو تغییر ندهیم، ممکن است با خطای دستور تعریف نشده مواجه بشیم چون فایل yazd-thesis.tex ممکنه دستوراتی داشته باشه که خارج از اون تعریف نشده باشند.بنابراین باید catcodeها رو به ۱۲ تغییر بدهیم. خوشبختانه موتور حروفچین e-TeX دستور بدوی مشابهی به نام \readline در اختیار ما قرار میده که catcodeها خودکار ۱۲ هستند. بنابراین برای راحتی کار ما از این دستور بدوی استفاده میکنیم. این دستور بدوی هر خط از فایلی رو که میخواهیم بخونیم میخونه و محتوای این خط رو در یک دستور ذخیره میکنه. بنابراین کاری که ما میخواهیم انجام بدهیم این هست که داخل یک حلقه بشیم و محتوای فایلی رو که میخواهیم بخونیم خط به خط بخونیم و در فایلی که میخواهیم بنویسیم.
\loop
\unless\ifeof\maintexin
\readline\maintexin to\maintexinline
\immediate\write\maintexout{\maintexinline}%
\repeat
مقداری توضیح در مورد این دستورات لازم هست. دستور بدوی \unless رو دوباره موتور e-TeX در اختیار قرار میده و logic دستور شرطی رو برعکس میکنه که من برای راحتی و اینکه مجبور نباشم از \else استفاده کنم از این دستور بدوی استفاده کردم.
دستور بدوی \ifeof رو موتور تک در اختیار ما قرار میده و به ما این اجازه رو میده که بفهمیم آیا پایان فایل هستیم یا نه.
بنابراین فایل تک ما تا این لحظه به شکل زیر هست:
\newread\maintexin
\newwrite\maintexout
\immediate\openout\maintexout=mythesis
\immediate\openin\maintexin=yazd-thesis
\loop
\unless\ifeof\maintexin
\readline\maintexin to\maintexinline
\immediate\write\maintexout{\maintexinline}%
\repeat
\immediate\closein\maintexin
\immediate\closeout\maintexout
\end
این تقریبا همه کدی است که لازم داریم. اگر این کدها رو در فایلی به نام test.tex ذخیره کنیم و دستور زیر رو اجرا کنیم:
xetex test
فایلی به نام mythesis.tex درست میشه که تقریبا دقیقا کپی فایل yazd-thesis.tex هست. اما یک مشکل وجود داره و اون این هست که اگر فایل mythesis.tex رو باز کنیم، میبینیم که در پایان هر خط ^^M قرار داره. این همون کاراکتر پایان خط هست و اگر نمیخواهیم این کاراکتر در پایان خر خط وجود داشته باشه کافی است با استفده از دستور بدوی \endlinechar به تک بگوییک که آن را نادیده بگیرد.
بنابراین نسخه نهایی فایل تک ما بصورت زیر باید باشد:
\endlinechar=-1
\newread\maintexin
\newwrite\maintexout
\immediate\openout\maintexout=mythesis
\immediate\openin\maintexin=yazd-thesis
\loop
\unless\ifeof\maintexin
\readline\maintexin to\maintexinline
\immediate\write\maintexout{\maintexinline}%
\repeat
\immediate\closein\maintexin
\immediate\closeout\maintexout
\end