VieTeX

Chương trình soạn thảo TeX

Gói lệnh enumerate.sty

Posted by nhdien on 18/06/2009

1. Giới thiệu

Trong soạn thảo văn bản nảy sinh một danh sách liệt kê là chuyện hay gặp. Trong LaTeX đã thiết kế cấu trúc sẵn môi trường enumerate, itemize, description,… Nhưng vẫn không đáp ứng được cách liệt kê đa dạng và chủ động đánh số thứ tự. Rất nhiều gói lệnh được viết để bổ sung và trợ giúp đa dạng này. Gói lệnh đầu tiên tôi xét ở đây là gói lệnh enumerate.sty được viết do David Carlisle trong gói công cụ tools được kèm theo LaTeX mà MiKTeX đã có sẵn, còn trên mạng thì tại địa chỉ

http://tug.ctan.org/tex-archive/macros/latex/required/tools/

Bạn tải tệp tools.zip về và mở ra có một số gói lệnh trong này. Ở đây tôi chỉ mô tả ứng dụng gói lệnh enumerate.sty

2. Các ví dụ và mục đích của gói lệnh

– Mục đích của gói lệnh này là chủ động  đánh số theo các ký hiệu khác nhau kiểu như khi đã có \usepackage{enumerate} ở đầu thì ta có thể dùng môi trường tùy chọn

\def\maru#1{\textcircled{\scriptsize#1}}

\begin{enumerate}[\expandafter\maru 1]
\item Thứ nhất
\item Thứ hai
\item Thứ ba
\end{enumerate}

Cho kết quả

enumerate1

– Ta có thể đánh số theo chữ số La mã, hoặc Ảrập bằng cách
 \begin{enumerate}[EX i.]
 \item one one one one one one one
        one one one one one
 \item two
     \begin{enumerate}[{example} a)]
     \item one of two  one of two  one of two
     \item two of two
     \end{enumerate}
 \end{enumerate}

\dotfill

 \begin{enumerate}[{A}-1]
 \item one
 \item two
 \end{enumerate}

enumerate2

– Ta có thể chủ động đánh số th

\begin{enumerate}[I.]
  \item Chủ động số trong số với enumerate
    \begin{enumerate}[A.]
      \item Chủ động số trong số với enumerate
\begin{enumerate}[1.]
  \item Chủ động số trong số với enumerate
  \item Chủ động số trong số với enumerate
\end{enumerate}
    \end{enumerate}
  \item Chủ động số trong số với enumerate
    \begin{enumerate}[A.]
      \item Chủ động số trong số với enumerate
\begin{enumerate}[1.]
  \item Chủ động số trong số với enumerate
  \item Chủ động số trong số với enumerate
\end{enumerate}
    \end{enumerate}
\end{enumerate}

enumerate3– Ta có thể dàn sếp để môi trường sau thẳng hàng

\def\noidung{Các vấn đề đều ở đây mà ra cả thôi}
\newcommand\tightlist{\setlength\itemsep{0pt}\setlength\parsep{0pt}}
\newenvironment{myitemize}{\begin{itemize}\tightlist}{\end{itemize}}

\begin{enumerate}[{Phần thứ} 1:\enspace]
\tightlist
\item \begin{myitemize}
\item \noidung
\item \noidung
\item \noidung
\end{myitemize}
\item \begin{myitemize}
\item \noidung
\item \noidung
\item \noidung
\end{myitemize}
\item \begin{myitemize}
\item \noidung
\item \noidung
\item \noidung
\end{myitemize}
\end{enumerate}

enumerate4

– Ta có thể đánh dấu sao vào các số đêm theo cách định nghĩa ở đầu một \itemstar như

\def\noidungmoi{Đánh dấu có sao}
\makeatletter
\newcommand*\starwidthbox[1]{%
  {%
    \settowidth\@tempdima{*}%
    \hbox to\@tempdima{#1}%
  }%
}%
\newcommand*\itemstar{%
  \@ifnextchar[%
              {\item}%
              {%
                \item[%
                  \stepcounter{\@enumctr}%
                  \textbf{A}\csname the\@enumctr\endcsname
                  \starwidthbox{*}%
                ]%
              }%
}%
\makeatother

và sau đó trong môi trường

\begin{enumerate}[\bfseries{A}1\starwidthbox{}]%
\item \noidungmoi
\itemstar \noidungmoi
\itemstar \noidungmoi
\item \noidungmoi
\itemstar \noidungmoi
\item \noidungmoi
\itemstar \noidungmoi
\end{enumerate}

enumerate5

– Một chú ý là không cần gói lệnh enumerate.sty ta có thể làm cả dấu sao trước và sau bạn chép vào một tệp

\documentclass{article}
\usepackage[utf8]{vietnam}
\def\vanban{Ví dụ sao trước sao sau}
\begin{document}
\newcommand{\staritem}{\refstepcounter{enumi}\item[*\theenumi.]}
\newcommand{\itemstar}{\refstepcounter{enumi}\item[\theenumi*.]}
\begin{enumerate}
\item \vanban
\staritem \vanban
\item \vanban
\itemstar \vanban
\item \vanban
\end{enumerate}
\end{document}

enumerate6

3. Kết luận

Đây là gói đầu tiên đơn giản có thể áp dụng ngay. Tiếp sau đây tôi sẽ giới thiệu một số gói lệnh từ đơn giản đến tổng quát nhất.

2 Responses to “Gói lệnh enumerate.sty”

  1. Tuan Phuong said

    texpro chắc là bức xúc quá. Mình ghét nhất những ai hay nói linh tinh khi mà chưa thực sự bỏ công sức ra làm một điều gì. Mong texpro không phải là người như vậy. Hơn nữa nếu là texpro bạn vào trang này làm chi??? Đôi lời với bạn

  2. texpro said

    Bài này đọc khó hiểu quá. Code thì viết kiểu rừng rú. Tự đọc Manual của gói eumerate dễ hiểu hơn!

    Trả lời
    Cám ơn bạn đã góp ý. Kiểu rừng rú là gì mà cái từ môi trường của bạn cũng viết sai rồi, có thể bạn bức xúc quá? Xin lỗi làm mất thời giờ của bạn.

    Tôi đã xem lại, bài của tôi quá đơn giản và chủ yếu như là hướng dẫn của tài liệu, kể cả mã lệnh.Tài liệu hướng dẫn chỉ là phần nhỏ của bài này, bạn đọc chưa? Mà tôi có dấu đường dẫn của gói đó đâu. Với thời gian và tài của texpro chắc viết hay hơn, tôi nhận là người kém cỏi.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: