Chủ Nhật, 16 tháng 2, 2014

Thay đổi mặc định của LaTeX - Phần 1

Nhiều bạn trẻ đã đề nghị tôi hướng dẫn họ thực hiện môt số thao tác để văn bản \(\sf \LaTeX\) của họ khi in ra (hoặc view trên màn hình) đáp ứng các yêu cầu của giảng viên hướng dẫn. Tôi đã trả lời rằng trừ trường hợp bị bắt buộc các bạn không nên thay đổi các mặc định đươc thừa nhận bởi một cộng đồng mang tính toàn cầu này. Tuy nhiên một số thầy cô là giảng viên hướng dẫn (Luận văn tốt nghiệp đại học hay Luận văn Thạc sĩ) vốn quen sử dụng MS Word do đó họ rất dị ứng với cách dàn trang hoàn toàn tự động của \(\sf\LaTeX\) và trong một chừng mực nào đó nó không tương tích với toàn thể, ví dụ với tổng biên tập của một số các tạp chí mà dàn trang chủ yếu chỉ dùng Word. Nhưng nghĩ lại một số Nhà xuất bản lớn, ví dụ Springer Verlag hay Nhà xuất bản của một số trường đại học danh tiếng cũng có yêu cầu riêng với các tác giả muốn xuất bản các quyển sách tự mình đánh máy bằng \(\rm\LaTeX\). Do đó tôi viết bài này để giúp các bạn giải quyết đươc yêu cầu về dàn trang của một văn bản, một tài liệu hoăc một công trình khảo cứu được soạn bằng \(\sf \LaTeX\).

1. Vấn đề tiêu đề của Chapter.

\(\rm \LaTeX\) tự động tạo một khoảng trắng 50 pt kể từ đầu trang xuống để viết tiêu đề của chapter. Sau đó nó chừa tiếp 40 pt để trắng rồi mới viết dòng đầu tiên của chapter. Để dễ hình dung 50pt là bao nhiêu các bạn tham khảo bảng đối chiếu sau đây:

 pt point     (1 in = 72.27 pt)  
 pc pica     (1 pc = 12 pt)  
 in inch     (1 in = 25.4 mm)  
 bp big point   (1 in = 72 bp)  
 cm centimetre  (1 cm = 10 mm)  
 mm millimetre  
 dd didot point  (1157 dd = 1238 pt)  
 cc cicero    (1 cc = 12 dd)  
 sp scaled point (65536 sp = 1 pt)  
Yêu cầu 1. Em không muốn khoắng trắng 50 pt này.

Các thao tác sau đây áp dụng cho tất cả các công việc sắp thực hiện. Các bạn nếu soạn văn bản bằng \documentclass{book} thì mở file book.cls save as thành mybook.cls. Biên tập file này và lưu vào thư mục có chứa file \(\rm \TeX\) của các bạn. Tất nhiên file \(\sf\TeX\) bây giờ phải điều chỉnh là \documentclass{mybook}. Trong file mybook.cls các bạn tìm đến từ dòng 386-413.

386:  \def\@makechapterhead#1{%  
387:   \vspace*{50\p@}%  
388:   {\parindent \z@ \raggedright \normalfont  
389:    \ifnum \c@secnumdepth >\m@ne  
390:     \if@mainmatter  
391:      \huge\bfseries \@chapapp\space \thechapter  
392:      \par\nobreak  
393:      \vskip 20\p@  
394:     \fi  
395:    \fi  
396:    \interlinepenalty\@M  
397:    \Huge \bfseries #1\par\nobreak  
398:    \vskip 40\p@  
399:   }}  
400:  \def\@schapter#1{\if@twocolumn  
401:            \@topnewpage[\@makeschapterhead{#1}]%  
402:           \else  
403:            \@makeschapterhead{#1}%  
404:            \@afterheading  
405:           \fi}  
406:  \def\@makeschapterhead#1{%  
407:   \vspace*{50\p@}%  
408:   {\parindent \z@ \raggedright  
409:    \normalfont  
410:    \interlinepenalty\@M  
411:    \Huge \bfseries #1\par\nobreak  
412:    \vskip 40\p@  
413:   }}  

Ở các dòng 387 và 407 các bạn thay
 \vspace*{50\p@}%  
thành
 \vspace*{0\p@}%  
Nếu các bạn muốn xóa luôn 40pt trắng sau tiêu đề chương (I “CAN” YOU) thì thực hiện tương tự cho các dòng 398 và 412.
Yêu cầu 2. Chương và tiêu đề chương ra chính giữa trang giấy.

Tìm đến dòng 391 và 397

 \huge\bfseries \@chapapp\space \thechapter  
     \par\nobreak  
     \vskip 20\p@  
    \fi  
   \fi  
   \interlinepenalty\@M  
   \Huge \bfseries #1\par\nobreak  
thay bằng:
 \centerline{ \huge\bfseries \@chapapp\space \thechapter}  
     \par\nobreak  
     \vskip 20\p@  
    \fi  
   \fi  
   \interlinepenalty\@M  
 \centerline{  \Huge \bfseries #1\par\nobreak}  

Yêu cầu 3. Gạch dưới chữ Chương 1, Chương 2, v.v...

Tìm đến dòng 391


 \huge\bfseries \@chapapp\space \thechapter  

thay bằng:
 {\huge\bfseries \underline{\@chapapp\space \thechapter}}  


2. Vấn đề font chữ của section và subsection.

Để trình bày văn bản,\(\rm \LaTeX\) set font chữ cho chapter, section, subsection và subsubsection như sau:
chapter: \Huge
section: \Large
subsection: \large
subsubsection: \normalsize
Nay các bạn muốn cỡ chữ của section và subsection bằng nhau.
Như đã nói ở trên, nếu các bạn soạn văn bản bằng \documentclass{book} thì mở file book.cls save as thành mybook.cls. Biên tập file này và lưu vào thư mục có chứa file \(\rm \TeX\) bây giờ phải điều chỉnh là \documentclass{mybook}.
Tìm đến các dòng từ 414 – 425
 \newcommand\section{\@startsection {section}{1}{\z@}%  
                   {-3.5ex \@plus -1ex \@minus -.2ex}%  
                   {2.3ex \@plus.2ex}%  
                   {\normalfont\Large\bfseries}}  
 \newcommand\subsection{\@startsection{subsection}{2}{\z@}%  
                    {-3.25ex\@plus -1ex \@minus -.2ex}%  
                    {1.5ex \@plus .2ex}%  
                    {\normalfont\large\bfseries}}  
 \newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%  
                    {-3.25ex\@plus -1ex \@minus -.2ex}%  
                    {1.5ex \@plus .2ex}%  
                    {\normalfont\normalsize\bfseries}}  

điều chỉnh \Large và \large cho giống nhau. Ví dụ, nếu các bạn muốn section và subsection đều là \large (14pt) (nếu \documentclass là 12pt) thì ta sẽ điều chỉnh như sau:
 \newcommand\section{\@startsection {section}{1}{\z@}%  
                   {-3.5ex \@plus -1ex \@minus -.2ex}%  
                   {2.3ex \@plus.2ex}%  
                   {\normalfont\large\bfseries}}  
 \newcommand\subsection{\@startsection{subsection}{2}{\z@}%  
                    {-3.25ex\@plus -1ex \@minus -.2ex}%  
                    {1.5ex \@plus .2ex}%  
                    {\normalfont\large\bfseries}}  
thay chữ L (viết hoa) thành chữ l (viết thường). Thông thường chữ trên section và subsection đều là \textbf, do đó nếu có công thức toán học các bạn cũng nên set boldface cho công thức toán học, ví dụ.

1.1 Giải phương trình \(ax^2+bx+c=0\)

nên đổi thành

1.1 Giải phương trình \(\mathbf{ax^2+bx+c=0}\)

dùng lệnh \mathbf cho công thức toán học
 $\mathbf{ax^2+bx+c=0}$  

Câu hỏi 1: Canh giữa “Tài liệu tham khảo” và chuyển thành chữ in

Thưa thầy, làm thế nào để canh giữa “Tài liệu tham khảo” và chuyển thành chữ in trong WinEdt.
Thầy giả sử em sử dụng \documentclass{report} em mở file report.cls tìm đến dòng 670
 {\chapter*{\bibname}%  
em đổi thành
 {\chapter*{\centerline{\MakeUppercase\bibname}}%  
rồi save lại.
Đối với book.cls cũng thực hiện tương tự.

Câu hỏi 2: Đổi chữ “Chương” thành chữ “Phần”

Tìm file vncaps.tex, tìm đến dòng 35
 \def\chaptername{Ch\uhorn \ohorn ng}%  
đổi thành
 %\def\chaptername{Ch\uhorn \ohorn ng}%  
 \def\chaptername{Ph\`\acircumflex n}%  
Tất nhiên lưu file này lại. Sau này nếu muốn trở lại như cũ, thì thay 2 dòng đó thành
 \def\chaptername{Ch\uhorn \ohorn ng}%  
 %\def\chaptername{Ph\`\acircumflex n}%  

Câu hỏi 3: Đổi kích thước font chữ của chương

Bui sang tho 
Làm thế nào để đổi kích thước font chữ của chương ạ (mặc định là Huge lớn quá ạ), em đã thử nhiều lần mà không được.
Eem tìm file report.cls đền các dòng 362-373
 \def\@makechapterhead#1{%  
  \vspace*{50\p@}%  
  {\parindent \z@ \raggedright \normalfont  
   \ifnum \c@secnumdepth >\m@ne  
     \huge\bfseries \@chapapp\space \thechapter  
     \par\nobreak  
     \vskip 20\p@  
   \fi  
   \interlinepenalty\@M  
   \Huge \bfseries #1\par\nobreak    
   \vskip 40\p@  
  }}  
đổi thành:
 \def\@makechapterhead#1{%  
  \vspace*{50\p@}%  
  {\parindent \z@ \raggedright \normalfont  
   \ifnum \c@secnumdepth >\m@ne  
     \large\bfseries \@chapapp\space \thechapter  
     \par\nobreak  
     \vskip 20\p@  
   \fi  
   \interlinepenalty\@M  
   \Large \bfseries #1\par\nobreak    
   \vskip 40\p@  
  }}  

sửa huge thành large và Huge thành Large

Đổi kích thước font chữ của chương

1 nhận xét:

  1. Thầy ơi cho em hỏi là: Em muốn đổi font chữ cho section ạ! Tức là đổi thành mã font như UAG, CMR....

    Trả lờiXóa