Professional Documents
Culture Documents
LATEX
THỰC HÀNH
NGUYỄN HỮU ĐIỂN
LATEX
THỰC HÀNH
(Phiên bản 1.0)
\documentclass{article}
\usepackage{amsmath,amsxtra,amssymb,latexsym,
amscd,amsthm}
\usepackage[utf8]{vietnam}
\begin{document}
....................................................
\end{document}
Chúng ta hãy nhớ rằng văn bản toán học thường đi trong
môi trường $ ... $. Cũng có những môi trường khác không
yêu cầu các ký hiệu đô la này. Trong chương này, chúng ta sẽ
sử dụng các ký hiệu đặc biệt (ký hiệu là phông chữ) không có
trong bộ ký hiệu mà LATEX tải theo mặc định.
Ví dụ, để viết “sin( x) ∈ R ”, bạn cần xác định một lệnh \sin
và có quyền truy cập vào gói cho phép bạn xác định lệnh \R để
lấy R.
Để có được văn bản toán học của chương này, cần có các
ký hiệu mà LATEX tải theo mặc định và một số gói bổ sung:
amsmath, amssymb, amsfonts, latexsym, .... Chúng ta cũng cần
năm lệnh đặc biệt cho \sin, \arcsin, v.v. Mẫu sau đi kèm với
12 Chương 1. Văn bản ở chế độ toán học
mọi thứ chúng ta cần cho các ví dụ tiếp theo trong suốt chương
này:
Mẫu cho chương này
\documentclass{article} %o report o book
\usepackage[total={18cm,21cm},centering]{geometry}
\usepackage{amsmath,amssymb,amsfonts,latexsym,cancel}
\usepackage[utf8]{inputenc} %Acentos desde el teclado
% \usepackage[T1]{fontenc}
\usepackage[utf8]{vietnam}
\usepackage{palatino,eulervm} % fuentes
% Comandos personales - especiales
\newcommand{\arcsec}{\mathop{\rm arcsec}\nolimits}
\newcommand{\R}{\mathbb{R}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}}
\begin{document}
Công thức $\sin^2(x)=1-\cos^2(x)$ ...
\end{document}
Ở đây, chúng ta giả định rằng bạn có bản phân phối TeX
hoàn chỉnh và cập nhật (ví dụ như MiKTeX hoặc TeXLive).
7 Ví dụ 1.1 8
Nhập mã Kết quả Nhập mã Kết quả
$x^p$ xp $x^{n+1}$ x n+1
n
$(2^2)^n$ (22 )n $2^{2^n}$ 22
$\sin^2(x)$ sin2 ( x) $x^{\sin(x)+\cos(x)}$ xsin(x)+cos(x)
$a _ n$ an $a _ {n+1}$ a n+1
$u _ {N+1}$ u N +1 $u _{ _{N+1}}$ u N +1
j Rb
$a _ i^j$ ai $\int_a^b f(x)\, dx$ a f ( x) dx
PN
$u _ {ij}$ ui j $\sum_{n=1}^{N}u_n $ n=1 u n
Các chỉ số dưới và chỉ số trên có thể được đặt như sau
Bình thường: $S _ {N _ j}$ tạo ra: S N j
Tốt hơn: $S _ { _ {N _ j}}$ mang lại: S N j
Như đã thấy trong bảng trên, văn bản toán học bao quanh
chiều rộng của hàng. Để mô tả để gấp nó về kích thước tự
nhiên, lệnh \displaystyle được sử dụng. Nếu bạn chỉ muốn
một phần văn bản toán học xuất hiện ở kích thước tự nhiên
write \displaystyle{} và giữa các dấu ngoặc nhọn văn bản
được đặt.
7 Ví dụ 1.2 8
Tổng từng phần $ N-$th $ S_N $ được xác định bằng đẳng thức
$ \displaystyle S_N = \sum _{k = 1}^{N} \; a _n $
: 2
Tổng từng phần N −th S N được xác định bằng đẳng thức
N
X
SN = an
k=1
Để tạo phân số, bạn có thể sử dụng các lệnh: {... \over .
..}, \frac{...}{...} hoặc {... \atop ...}, v.v. Hãy cũng xem
xét các "phân số" hữu ích khác.
7 Ví dụ 1.3 8
Nhập mã Kết quả
x+1
${x+1 \over x-1}$ x−1
x+1
$\frac{x+1}{x-1}$ x−1
x+1
$\dfrac{x+1}{x-1}$
x−1
$\displaystyle{\left(1+{1\over x}
¶ n+1
1 n
µ
\right)^{n+1 \over n}}$ 1+
x
$\displaystyle \left(1+\frac{1}{x}
¶ n+1
1 n
µ
\right)^\frac{n+1}{n}$ 1+
x
$\displaystyle{\left( 1+ {1 \over x}
¶n+1
1 n
µ
\right)}^{\displaystyle{n+1 \over n}}$ 1+
x
x+1
${x+1 \atop x-1}$ x−1
x+1
${x+1 \above 2pt x-1} (2pt là độ dày)$ (2pt độ dày)
x−1
© x+1ª
${x+1 \brace x-1}$ x−1
£ x+1¤
${x+1 \brack x-1}$ x−1
f
$\displaystyle{a\stackrel{f}{\rightarrow a→b
}b}$
$\displaystyle{\lim_{x\rightarrow 0}}f(x lim f ( x)
x→0
)$
à !
a
$\displaystyle{a \choose b}$
b
$\displaystyle{\sum_{
X
\substack{0<i< m\\0<j<n}}a_ib_j}$ ai b j
0< i < m
0< j < n
$\prod_{\overset{i=0}{i\neq k}}^{n}
Qn wi
\frac{w_i}{(w_i-w_k)}$ i =0 (w i −wk )
i ̸= k
7 Ví dụ 1.4 8
$$ L_{n,k}(x)
=\prod_{\overset{i=0}{i\neq k}}^{n}\,\frac{x-x_i}{x_k-x_i}$
$
$$= \frac{(x-x_0)(x-x_1)\cdots(x-x_{k-1})(x-x_{k+1})
\cdots(x-x_n)}{(x_k-x_0)\cdots(x_k-x_{k-1})(x_k-x_{k+1})
\cdots(x_k-x_n)} $$
: 2
n x−x
Y i
L n,k ( x) =
i =0 x k − x i
i ̸= k
( x − x0 )( x − x1 ) · · · ( x − xk−1 )( x − xk+1 ) · · · ( x − xn )
=
( xk − x0 ) · · · ( xk − xk−1 )( xk − xk+1 ) · · · ( xk − xn )
7 Ví dụ 1.5 8
Nhập mã Kết quả
Z
$\displaystyle{\int _ C\boldsymbol{F}\ F · dr
C
cdot\, dr}$
I
$\displaystyle{\oint _ C\pmb{F}\cdot\, F · dr
C
dr}$
Ï
$\displaystyle{{\iint _ D f(x,y)\,dA}}$ f ( x, y) d A
D
Ñ
$\displaystyle{{\iiint _ Q f(x,y,z)\,dA} f ( x, y, z) d A
Q
}$
7 Ví dụ 1.6 8
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
16 Chương 1. Văn bản ở chế độ toán học
Trong TEX, tất cả các định dạng của tài liệu được thực hiện
bằng các lệnh. Lệnh \ (dấu gạch chéo ngược) theo sau là tên
của lệnh với một chữ cái có dấu số và khoảng trắng không được
bao gồm và phân biệt chữ hoa chữ thường.
7 Ví dụ 2.1 8: 2
\LaTeX LATEX
Có những lệnh chỉ hoạt động bằng cách chỉ định các tham
số nhất định. Các tham số này phải được nhập vào đối số lệnh
giữa {...}. Ví dụ
7 Ví dụ 2.2 8: 2
\textit{Cũng có khi vô cớ} Cũng có khi vô cớ
Một lệnh cũng có thể có một đối số là tùy chọn. Nếu bạn
không nhập nó, tùy chọn mặc định có hiệu lực. Các tùy chọn
phải nằm trong đối số tùy chọn của lệnh được chỉ định giữa các
ký tự [...]. Ví dụ: một mục danh sách có thể được giới thiệu
trong
\item
với một lệnh đặt dấu mặc định trước mục danh sách, nhưng
bạn có thể nhập
\item[-]
cũng là một lệnh đặt dấu gạch ngang trước mục danh sách.
7 Ví dụ 2.3 8: 2
\begin{itemize} • Cũng có khi vô cớ
\item Cũng có khi vô cớ
\item[-] Biển ào ạt xô thuy - Biển ào ạt xô thuyền
ền
\end{itemize}
Một lệnh cũng có thể có một tùy chọn và một tham số.
7 Ví dụ 2.4 8: 2
\includegraphics[width = 1cm]{flower}
lệnh tải hình ảnh flower.jpg rộng 1cm. Bạn có thể chỉ định
nhiều tùy chọn cùng một lúc. Trong trường hợp này, các tùy
chọn phải được phân tách bằng dấu phẩy. Ví dụ
7 Ví dụ 2.5 8: 2
\includegraphics[width=1cm, angle=90]
{flower}
trong trường hợp này, chỉ "Chỉ có biển mới biết" sẽ được in
nghiêng. Bạn có thể { } thay bằng sử dụng
\begingroup
\endgroup
nhưng điều này tốt hơn cho việc viết các tệp kiểu hoặc lớp. Một
nhóm cũng được xác định bởi một môi trường. Ví dụ
7 Ví dụ 2.8 8: 2
\begin{itemize}
• Chỉ có biển mới biết
\itshape
\item Chỉ có biển mới biết Không nghiêng nữa
\end{itemize}
Không nghiêng nữa
Trên thực tế, đối số bắt buộc của lệnh tham số cũng là một
nhóm, chính xác hơn là nội dung của nhóm theo sau tên lệnh
(không xác định với ngữ cảnh) sẽ là tham số của lệnh. Mỗi ký
tự được mã hóa 1 byte được tính là một nhóm. Vì vậy, ví dụ:
7 Ví dụ 2.10 8
\textit Thuyền đi hoài không mỏi
: 2
Thuyền đi hoài không mỏi
trong từ “Thuyền đi hoài không mỏi” chỉ có chữ T in
nghiêng, nhưng
7 Ví dụ 2.11 8
\textit{Thuyền đi hoài không mỏi}
: 2
Thuyền đi hoài không mỏi
Trong trường hợp này, toàn bộ "Thuyền đi hoài không mỏi"
sẽ được in nghiêng. Đây chỉ là trường hợp cho đối số bắt buộc.
Đối với một đối số tùy chọn, bắt buộc phải chỉ định dấu ngoặc
vuông ở ranh giới của khối.
Nếu bản thân một lệnh không hiển thị bất cứ điều gì, không
có đối số bắt buộc hoặc tùy chọn, nhưng ảnh hưởng đến phần
sau nó, nó được gọi là lệnh khai báo. Một ví dụ là lệnh \itshape
đã đề cập trước đó. Mỗi lệnh khai báo cũng có một phiên bản
môi trường. Ví dụ: hai mã sau là tương đương:
7 Ví dụ 2.12 8
Một câu thơ {\itshape Biển vẫn xa ... còn xa}.\\
Một câu thơ \begin{itshape} Biển vẫn xa ... còn xa \end{
itshape}.
: 2
Một câu thơ Biển vẫn xa ... còn xa.
Một câu thơ Biển vẫn xa ... còn xa .
Nếu cái gọi là bạn muốn đặt một nhận xét, tức là, những
gì trình biên dịch LATEX bỏ qua, hãy viết dấu % ở đầu dòng đó.
Nhận xét kết thúc bằng ngắt dòng. Ví dụ:
7 Ví dụ 2.13 8
% Văn bản này sẽ không xuất hiện sau khi dịch!
Nó sẽ xuất hiện,% nhưng nó sẽ không!
: 2
Nó sẽ xuất hiện,
Nếu bạn muốn “bình luận” một phần nhiều dòng, hãy sử
dụng môi trường comment của gói comment.sty. Ví dụ,
7 Ví dụ 2.14 8
Điều này xuất hiện.
\begin {comment}
Điều này không xuất hiện, và cũng không!
\end {comment}
Nó sẽ xuất hiện một lần nữa!
: 2
Điều này xuất hiện. Nó sẽ xuất hiện một lần nữa!
Trước tiên, bạn phải tải một lớp tài liệu bằng lệnh
\documentclass, lệnh này chỉ định kiểu cơ sở của tài liệu. Ví
dụ: để tải một lớp tài liệu article (bài báo) với tùy chọn 12pt:
\documentclass[12pt]{article}
Phần tiếp theo của môi trường tài liệu được gọi là <phần m
ở đầu>. Điều này bao gồm các lệnh ảnh hưởng đến toàn bộ tài
liệu, nhưng không thể chứa văn bản để hiển thị. Bên trong môi
trường tài liệu được gọi là <thân tài liệu>, chứa tất cả văn bản
và lệnh để hiển thị. Văn bản hoặc các lệnh được viết sau lệnh
\end{document} bị trình biên dịch LATEX bỏ qua.
Bạn có thể mở rộng khả năng và phong cách của lớp tài liệu
bằng các gói lệnh, gói lệnh có tên và có đuôi sty, ví dụ gói đưa
hình vào graphicx.sty. Những gói này được đặt trong phần mở
đầu bằng lệnh.
\usepackage[<tùy chọn>]{<tên gói lệnh>}
Ví dụ
\usepackage[utf8]{vietnam}
Đặt mã soạn thảo utf8 (unicode) cho tiếng Việt. Nếu không có
tùy chọn nào hoặc bạn đang sử dụng các tùy chọn mặc định,
bạn không cần dấu ngoặc vuông. Ví dụ
\usepackage{listings}
có thể hiển thị mã chương trình. Nếu bạn tải nhiều tùy chọn,
chúng phải được phân tách bằng dấu phẩy. Ví dụ
\usepackage[paperwidth=105mm,paperheight=75mm]{geometry}
chiều rộng trang sẽ là 105mm và chiều cao trang sẽ là 75mm.
Nếu bạn tải nhiều gói với các tùy chọn mặc định, bạn có thể
thực hiện như sau:
\usepackage{<gói 1>, <gói 2>, <gói 3>, ...}
Ví dụ
\usepackage{listings,fancyhdr}
tải listings.sty và gói fancyhdr, có thể được thực hiện theo
cách này:
\usepackage{lists}
\usepackage{fancyhdr}
Trước đây, chúng ta đã thấy rằng bạn cần tải một lớp tài
liệu trước tiên, lớp này xác định kiểu cơ sở của tài liệu:
\documentclass [<tùy chọn>]{<lớp tài liệu>}
Dưới đây là ba lớp tài liệu tiêu chuẩn đáp ứng nhu cầu của
chúng ta trong hầu hết các trường hợp.
article Bài giảng, thư mời, báo cáo nhỏ, tài liệu chương trình,
ấn phẩm, v.v.. Các tùy chọn chính:
10pt, 11pt, 12pt - Kích thước phông chữ mặc định của
tài liệu. Tùy chọn mặc định: 10pt
a4paper, a5paper, b5paper, letterpaper - Kích thước
trang. Tùy chọn mặc định là kích thước tiêu đề thư
Hiện nay các tài liệu soạn cho LATEX đều dựa trên mã Uni-
code, chính xác hơn là utf8. Tác giả Hàn Thế Thành có soạn ra
gói lệnh vntex.sty và đặt định nghĩa mã T5 dùng trong LaTeX.
Cách định dạng trên dùng mã T5, nên phải các gói lệnh có
phông mã T5, những gói lệnh sau đây có chữ đẹp:
mathpazo.sty, mathptmx.sty, charter.sty,...(các bạn tạo ra tệp
soanthao3.tex rồi chạy thử)
\documentclass[12pt]{article}
\usepackage{amsmath,amsxtra,amssymb,latexsym,amsthm}
\usepackage[utf8]{vietnam}
\usepackage{mathpazo}
\begin{document}
<Soạn tiếng việt ở đây.>
\end{document}
ta có soạn một gói lệnh chạy được với mọi phông mã của
LATEX như OT1, T1, T5, ... Các bạn vào
https://vietex.blog.fc2.com/blog-entry-153.html
\documentclass[12pt]{article}
\usepackage{amsmath,amsxtra,amssymb,latexsym,amsthm}
\usepackage[T1]{fontenc}
\usepackage[T1]{vietex}
\usepackage{jamtimes}
\begin{document}
<Soạn tiếng việt ở đây.>
\end{document}
Tương tự gói lệnh vntext.sty bao trùm gói lệnh trên với mõi
mã tiếng Việt trong nước TCVN, VNI, BK, .... và các phông
thư pháp.
Soan tiïng
ë viït úí àêy. .
.
Ngôn ngữ của tài liệu có thể được đặt làm tùy chọn trong
gói babel.sty, gói này biết kiểu chữ của các ngôn ngữ sau, trong
số các ngôn ngữ khác:
bulgarian, croatian, czech, danish, dutch, english, es-
peranto, estonian, finnish, french, ngerman, greek, hebrew,
magyar, icelandic, irish, italian, latin, polish, portuges, ro-
manian, russian, scottish, serbian, slovak, slovene, spanish,
swedish, turkish, ukrainian, welsh, vietnamese.
Ví dụ: nếu bạn viết bằng tiếng Anh, mã sau là đúng:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\begin{document}
English text
\end{document}
Bạn có thể viết bằng nhiều ngôn ngữ trong một tài liệu.
Trong trường hợp này, các ngôn ngữ được sử dụng phải được
liệt kê trong tùy chọn gói babel.sty, được phân tách bằng dấu
phẩy. Ngôn ngữ cuối cùng sẽ là ngôn ngữ mặc định. Từ ngôn
ngữ cơ bản sang ngôn ngữ khác bạn có thể chuyển đổi bằng
lệnh.
\selectlanguage{<tên ngôn ngữ>}
Nếu bạn chỉ muốn tạm thời chuyển sang ngôn ngữ khác cho
một vài đoạn văn, hãy sử dụng môi trường.
\begin{otherlanguage}{<tên ngôn ngữ>}
<chữ của ngôn ngữ>
\end{otherlanguage}
Nếu bạn chỉ muốn chuyển đến một đoạn văn, bạn có thể sử
dụng lệnh.
\foreignlanguage{<ngôn ngữ>}{<văn bản ngôn ngữ>}
Ví dụ: trong đoạn mã sau, ngôn ngữ mặc định là tiếng Đức,
trong đó chúng ta cũng chèn một đoạn trích bằng tiếng Anh:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english,ngerman]{babel}
\begin{document}
Deutsch Text
\foreignlanguage{english}{English text}
\end{document}
Tương tự dùng gói lệnh babel.sty cho tiếng Việt soạn theo mã
unicode (các bạn tạo ra tệp soanthao2.tex rồi chạy thử)
\documentclass[12pt]{article}
\usepackage[vietnamese]{babel}
\usepackage{mathpazo}
\begin{document}
Soạn tiếng việt ở đây.
\end{document}
^ chỉ số trên.
~ dấu trắng không thể ngắt.
Nếu bạn muốn hiển thị chúng trong pdf, bạn có thể sử dụng
các lệnh sau:
\ → \textbackslash hoặc \char \string‘\\
% → \%
{ → \{
} → \}
$ → \$
& → \&
# → \#
_ → \_
^ → \textasciicircum hoặc \char\string‘\^
~ → \textasciitilde hoặc \char\string‘\~
Nó đã được đề cập trước đây rằng sau khi thiết lập mã hóa
của tệp nguồn, một chữ cái có dấu cũng có thể được nhập trực
tiếp từ bàn phím. Nhưng điều gì sẽ xảy ra nếu bạn viết một
tệp kiểu trong đó bạn để lại lựa chọn trang mã cho người dùng
hoặc bạn cần một chữ cái có dấu không có trên bàn phím?
Trong trường hợp này, bạn có thể sử dụng dấu.
Tất nhiên, chữ o có thể được trao đổi cho bất cứ điều gì
ngoại trừ hai chữ cái tiếng Anh có dấu: i và j. Không nên đặt
dấu nào khác trên những chữ này, bởi vì kết quả của \H{i} là
i̋. Do đó, các chữ cái i và j cũng có phiên bản không có dấu, bạn
có thể truy cập bằng các lệnh \i và \j: ı, Ỷ. Điều này sẽ cho
phép bạn viết chữ ı̋ dưới dạng \H{\i}. Ngoại lệ cho điều này là
hai chữ cái phổ biến hơn là í và ì, cũng có thể được viết thành
\’{i}, \’{i}.
Lệnh \k chỉ có sẵn cho bộ mã nội bộ T1.
Œ \OE Æ \AE Ø \O Ỷ \j
œ \oe æ \ae ø \o L \L
Å \AA ß \ss ı \i l \l
Các chữ cái đặc biệt bổ sung chỉ có thể được sử dụng cho bộ
mã nội bộ T1:
Ð \DH Ð \DJ Ŋ \NG Þ \TH
ð \dh đ \dj ŋ \ng þ \th
Mục đích của nhân của ký tự là căn chỉnh hai chữ cái liền
kề để khoảng cách giữa các chữ cái giống nhau về mặt quang
học. Qua ví dụ sau, điều này trở nên dễ hiểu. Dòng đầu tiên
được tạo bằng nhân của ký tự và dòng thứ hai không có:
7 Ví dụ 2.15 8: 2
AVATÁR\\ AVATÁR
{A}V{A}T{Á}R AVATÁR
Dấu nối là một kết nối gần gũi hơn bình thường của các chữ
cái với nhau. Những điều được biết đến nhiều nhất sau đây cái
gọi là chữ ghép f:
7 Ví dụ 2.16 8: 2
{\Large \rm ff fi fl ffi ff fi fl ffi ffl
ffl}
LATEX xử lý các chữ ghép theo mặc định mà không cần phải
ra lệnh riêng.
Để tắt chữ ghép ở một chỗ, hãy đặt dấu {} giữa các chữ cái:
7 Ví dụ 2.17 8: 2
{\Large \rm f{}f f{}i f{}l ff fi fl ffi ffl
f{}f{}i f{}f{}l}
2.4.6 Ký tự là ký hiệu
Dưới đây là một số ký hiệu thú vị. Đọc thêm về điều này
trong symbol-a4.pdf
https://www.ctan.org/tex-archive/info/symbols/comprehensive/
Ký hiệu có trong eurosym.sty và textcomp.sty:
* \textasteriskcentered
• \textbullet
Bạn có thể tạo khoảng trắng trong tệp nguồn bằng cách
nhấn phím [Dấu cách]. Nhiều khoảng trắng trong một hàng
trong tệp nguồn chỉ đại diện cho một khoảng trắng trong kết
quả cuối cùng, nhưng khoảng trắng ở đầu dòng không xuất
hiện trong kết quả cuối cùng. Nó cũng được tính là khoảng
trắng trong kết quả cuối cùng nếu có ngắt dòng trong tệp
nguồn. Điều này chỉ không đúng nếu có dấu % ở cuối dòng
không có dấu cách ngay trước nó. Ví dụ
7 Ví dụ 2.18 8: 2
Từ ngày nào chẳng Từ ngày nào chẳng biết
biết Thuyền nghe lời biển khơi
Thuyền nghe lời biển
khơi
Nếu một lệnh không có đối số, nó thường là khoảng trắng sau
nó. Nó không hiển thị. Ví dụ
7 Ví dụ 2.19 8: 2
\LaTeX Tra cứu và soạn thảo LATEXTra cứu và soạn thảo
Nếu điều này mang lại kết quả không mong muốn, bạn có thể
đặt lệnh trong dấu ngoặc đơn hoặc sử dụng lệnh \ để buộc có
khoảng trắng:
7 Ví dụ 2.20 8
LaTeX{} tra cứu, {\LaTeX} tra cứu, \LaTeX\ tra cứu.
: 2
LaTeX tra cứu, LATEX tra cứu, LATEX tra cứu.
Cũng có trường hợp bạn không nên ngắt dòng sau dấu cách.
Ví dụ, nếu chúng ta viết N. H. Điển, thì sau điểm chấm không
thể có ngắt dòng. Để ngăn điều này sau khi đặt chấm dùng
ngay ~ không gian không thể phá vỡ. Nguồn ~ dấu hiệu của ký
tự trắng và không ngắt dòng:
N.~H.~Điển
Điều này đáng làm sau mỗi chấm không cho biết kết thúc
câu. Do đó, các chấm như vậy không thể kết thúc ở cuối dòng.
Hãy cẩn thận, nếu bạn đã đặt một khoảng trống không thể
ngắt ở đâu đó, đừng thêm một khoảng trắng khác sau đó, vì
nó sẽ dẫn đến hai khoảng trắng và khả năng không thể ngắt
cũng sẽ biến mất:
7 Ví dụ 2.21 8
N.~H.~Điển (đặt đúng).\\
N. ~H.~ Điển (đặt dấu không ngắt sai).
: 2
N. H. Điển (đặt đúng).
N. H. Điển (đặt dấu không ngắt sai).
Ngoài ra còn có một phiên bản của ký tự trắng không thể
ngắt có kích thước bằng một nửa không gian bình thường. Điều
này thường được sử dụng giữa một đơn vị đo lường và một đơn
vị đo lường, hoặc khi nhóm hàng nghìn số. Trong mã nguồn \,
dấu hiệu của một nửa ký tự trắng không thể ngắt:
7 Ví dụ 2.22 8: 2
9\,cm, 14\,216\,123 9 cm, 14 216 123
2.5.1 Dấu chấm, dấu phẩy, dấu hai chấm, dấu chấm
phẩy, dấu chấm hỏi, dấu chấm than
7 Ví dụ 2.23 8
Nguyễn Hữu Điển https://www.facebook.com/groups/vietex/
2.5. Chấm câu 37
Xem các video yêu thích trên HBO của bạn bất cứ khi nào bạn
muốn, cho dù bạn ở đâu -- đó là mọi tập của mỗi mùa
hay nhất của HBO\@. Nhiều kênh hơn để xem. Tất cả đều c
ó ở dạng HD\@.
: 2
Xem các video yêu thích trên HBO của bạn bất cứ khi nào
bạn muốn, cho dù bạn ở đâu – đó là mọi tập của mỗi mùa
hay nhất của HBO. Nhiều kênh hơn để xem. Tất cả đều có
ở dạng HD.
Dấu gạch ngắn. Dấu gạch ngắn có thể được chỉ định trong
tệp nguồn bằng -.
7 Ví dụ 2.24 8
lấy mẫu-không khí; tiền- tố hoặc hậu tố; phông chữ và kích
-thước; một hoặc hai-người; Có thể từ 5-6 tuổi; bạn có-
biết;
: 2
lấy mẫu-không khí; tiền- tố hoặc hậu tố; phông chữ và kích
-thước; một hoặc hai-người; Có thể từ 5-6 tuổi; bạn có-biết;
Dấu gạch nối. Dấu gạch nối có thể được chỉ định trong tệp
nguồn bằng dấu --. Ví dụ
7 Ví dụ 2.25 8
xem các trang 15--21; Đông--Tây; máy bay TU--154 của Nga;
trận Việt--Mỹ;
: 2
xem các trang 15–21; Đông–Tây; máy bay TU–154 của Nga;
trận Việt–Mỹ;
Tên của các cặp tác giả cũng được nối với nhau bằng dấu
gạch nối, nhưng trong trường hợp này phải đặt một nửa dấu
cách không thể ngắt được trước và sau dấu gạch nối.
7 Ví dụ 2.26 8
Định lý Bolzano\,--\,Weierstrass
: 2
Định lý Bolzano – Weierstrass
Dấu gạch ngang. Dấu gạch ngang trong tệp nguồn có thể
được chỉ định bằng --. Có một khoảng trắng trước và sau một
dấu gạch ngang, trừ khi nó được theo sau bởi một dấu chấm
câu. Ví dụ
7 Ví dụ 2.27 8
Anh ấy không -- dậy sớm như vậy, ít nhất là vào -- cuối tuầ
n.
: 2
Anh ấy không – dậy sớm như vậy, ít nhất là vào – cuối tuần.
7 Ví dụ 2.28 8
Họ đã tranh cãi nhiều lần --, hầu hết đều không có -- lý do
gì.
nhưng họ đã yêu nhau.
: 2
Họ đã tranh cãi nhiều lần –, hầu hết đều không có – lý do
gì. nhưng họ đã yêu nhau.
Dấu gạch ngang dài. Dấu (—) cũng có thể được sử dụng như
một dấu gạch ngang trong tiếng Anh, nhưng không được phép
có dấu cách trước và sau dấu này. Trong nguồn nhập vào ---.
Các dấu (,), [,], {,}, <,> gọi là dấu ngoặc. Chúng tuân theo
của quy tắc đối với dấu gạch ngang.
7 Ví dụ 2.29 8
Thuyền và biển ( Xuân Quỳnh )
: 2
Thuyền và biển ( Xuân Quỳnh )
Dấu ba chấm trong tệp nguồn có thể được chỉ định bằng
lệnh \dots. Thay vào đó, đừng bao giờ sử dụng ba dấu chấm
được viết liên tiếp. Ví dụ
7 Ví dụ 2.30 8
Dấu \dots đẹp hơn ... chỉ (\dots nên dùng \dots hơn là ...)
.
: 2
Dấu . . . đẹp hơn ... chỉ (. . . nên dùng . . . hơn là ...).
Dấu ngoặc kép và dấu ngoặc kép bên trong thay đổi tùy
theo ngôn ngữ. Cần có dấu ngoặc kép bên trong nếu có dấu
ngoặc kép trong phần trích dẫn
7 Ví dụ 2.31 8
,,văn bản >> văn bản << văn bản ’’ hoặc
: 2
„văn bản » văn bản « văn bản ” hoặc
Vì vậy, dấu ngoặc kép mở bên ngoài trong nguồn là hai dấu
phẩy, trong khi dấu ngoặc kép ngoài đóng trong nguồn là hai
dấu nháy đơn. Dấu ngoặc kép mở nội bộ » và dấu ngoặc kép nội
bộ đóng « trong nguồn. Trong văn bản tiếng Anh, theo quy tắc
của Anh, điều này nên được thực hiện:
7 Ví dụ 2.32 8: 2
‘văn bản ‘‘văn bản’’ văn b ‘văn bản “văn bản” văn bản’
ản’
Vì vậy, dấu ngoặc kép mở bên ngoài trong nguồn là dấu nháy
đơn ngược, trong khi dấu ngoặc kép đóng bên ngoài trong
nguồn là dấu nháy đơn. Dấu ngoặc kép mở bên trong trong
nguồn là hai dấu nháy đơn ngược, trong khi dấu ngoặc kép
bên trong đóng trong nguồn là hai dấu nháy đơn.
Theo quy tắc của Mỹ, trật tự được đảo ngược. Nghĩa là,
dấu ngoặc kép mở bên ngoài trong nguồn là hai dấu nháy đơn
ngược, trong khi dấu ngoặc kép ngoài đóng trong nguồn là hai
dấu nháy đơn. Dấu ngoặc kép bên trong mở đầu trong nguồn là
dấu nháy đơn ngược, trong khi dấu ngoặc kép bên trong đóng
trong nguồn là dấu nháy đơn:
7 Ví dụ 2.33 8: 2
‘‘văn bản ‘văn bản’ văn bản “văn bản ‘văn bản’ văn bản”
’’
Ngoài những điều trên, có một giải pháp phổ quát. Tải gói
csquotes.sty với tùy chọn autostyle. Gói này hỗ trợ dấu ngoặc
kép cho các ngôn ngữ sau: Croatia, Đan Mạch, Hà Lan, Anh,
Phần Lan, Pháp, Đức, Hy Lạp, Ý, Na Uy, Ba Lan, Bồ Đào Nha,
Nga, Tây Ban Nha, Thụy Điển, Việt Nam.
\enquote{<văn bản> \enquote{<văn bản>} <văn bản>} %csquotes
.sty
7 Ví dụ 2.34 8
\enquote{văn bản \enquote{văn bản} văn bản}
: 2
“văn bản ‘văn bản’ văn bản”
mã sử dụng dấu ngoặc kép (cả bên ngoài và bên trong) theo
ngôn ngữ có hiệu lực. Nếu bạn muốn hiển thị trực tiếp dấu
ngoặc kép nội bộ, hãy sử dụng lệnh
\enquote*{<văn bản>} % csquotes.sty
7 Ví dụ 2.35 8: 2
\enquote{văn bản}\\ “văn bản”
\enquote*{văn bản} ‘văn bản’
Nhiều đoạn văn bản cũng có thể được sử dụng trong đối số của
lệnh \enquote và \enquote*.
Các biến thể phông chữ được phân loại theo họ, nội dung
và hình dạng của chúng.
Họ phông chữ
Họ phông có chân (roman)
\textrm{<văn bản>} hoặc {\rmfamily <văn bản>}
7 Ví dụ 2.36 8
Họ \textrm{có chân}, \textsf{không chân}, \texttt{đánh máy}
: 2
Họ có chân, không chân, đánh máy
Thân chữ (series)
Bình thường (medium)
\textmd{<văn bản>} hoặc {\mdseries <văn bản>}
In đậm (boldface)
\textbf{<văn bản>} hoặc {\bfseries <văn bản>}
7 Ví dụ 2.37 8
Bình thường, \textmd{Bình thường}, \textbf{In đậm}
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
42 Chương 2. Những cơ bản soạn thảo bằng LATEX
Nghiêng (slanted)
\textsl{<văn bản>} hoặc {\slshape <văn bản>}
Nghiêng (italics)
\textit{<văn bản>} hoặc {\itshape <văn bản>}
7 Ví dụ 2.38 8
Chữ, \textup{đứng}, \textsl{ngả}, \textit{nghiêng}, \textsc
{Hoa Nhỏ}
: 2
Chữ, đứng, ngả, nghiêng, HOA NHỎ
Nếu được hỗ trợ bởi bộ phông chữ hiện tại, hai hình dạng
có thể được kết hợp. Ví dụ: nếu bạn sử dụng bộ mã nội bộ T1
để chuyển từ bộ phông chữ Hiện đại của Máy tính Châu Âu
mặc định sang bộ phông chữ Hiện đại Latinh bằng cách tải gói
hiện đại, thì dạng viết hoa nghiêng nghiêng cũng có sẵn:
7 Ví dụ 2.39 8
{\bfseries \textsc{Chữ viết hoa nghiêng}}
: 2
CHỮ VIẾT HOA NGHIÊNG
Điều quan trọng cần lưu ý là trong trường hợp này, các lệnh
\uphape hoặc \textup chỉ là định dạng dọc được khôi phục, hình
7 Ví dụ 2.40 8
{\slshape \bfseries Vốn nhỏ bị từ chối. \upshape Thường vốn
nhỏ.}
: 2
Vốn nhỏ bị từ chối. Thường vốn nhỏ.
Trong ví dụ trước, nếu bạn không muốn khôi phục hình
dạng nghiêng mà là hình dạng viết hoa/viết thường, hãy sử
dụng lệnh \textulc hoặc \ulcshape.
7 Ví dụ 2.41 8
{\bfseries\scshape Vốn nhỏ bị từ chối. \ulcshape In đạm/viế
t hoa}
: 2
VỐN NHỎ BỊ TỪ CHỐI . In đạm/viết hoa
Để trở về hình dạng mặc định (chữ thường/chữ hoa), hãy sử
dụng
{\normalshape <văn bản>}
7 Ví dụ 2.42 8
{\bfseries\scshape Vốn nhỏ bị từ chối. \normalshape Chữ hoa
/chữ thường.}
: 2
VỐN NHỎ BỊ TỪ CHỐI . Chữ hoa/chữ thường.
Sự kết hợp giữa họ phông, thân chữ và hình dáng
Không chỉ có hai hình, mà cả họ phông, thân chữ và hình
giáng đều có thể được kết hợp với nhau. Ví dụ
7 Ví dụ 2.43 8: 2
\textit{\textbf{\textsf{Văn bản}}} Văn bản
Khi bạn muốn quay lại phông chữ mặc định, hãy sử dụng
các lệnh.
Nếu một văn bản in nghiêng hoặc in nghiêng được theo sau
bởi một văn bản trong các chữ cái dọc, nên đặt một khoảng
trống lớn hơn một chút giữa chúng, nếu không, chữ cái in
nghiêng sẽ rất nghiêng về phía chữ sau. Đây được gọi là cân
bằng chữ thảo. Để minh họa điều này, câu sau đây được thực
hiện đầu tiên mà không cần cân bằng nghiêng và sau đó với
cân bằng nghiêng:
“Một tệp ảnh có đuôi *.tif chứa các lệnh hoạt hình.”
“Một tệp ảnh có đuôi *.tif chứa các lệnh hoạt hình.”
Các lệnh \textit và \textsl thực hiện cân bằng chữ
nghiêng tự động, vì vậy hai giải pháp sau đây cho kết quả
chính xác:
7 Ví dụ 2.44 8
‘‘Một tệp ảnh có đuôi \textit{*.tif} chứa các lệnh hoạt hì
nh.’’\\
‘‘Một tệp ảnh có đuôi \textsl{*.tif} chứa các lệnh hoạt hì
nh.’’
: 2
“Một tệp ảnh có đuôi *.tif chứa các lệnh hoạt hình.”
“Một tệp ảnh có đuôi *.tif chứa các lệnh hoạt hình.”
Tuy nhiên, các cặp khai báo, lệnh \itshape và \slshape và
các phiên bản ngữ cảnh của chúng không giải quyết được vấn
đề này. Do đó, người dùng phải giải quyết vấn đề này bằng lệnh
\/:
7 Ví dụ 2.45 8
‘‘Tệp ảnh có đuôi {\itshape *.tif\/} chứa các lệnh hoạt hì
nh.’’\\
‘‘Tệp ảnh có đuôi {\slshape *.tif\/} chứa các lệnh hoạt hì
nh.’’
: 2
“Tệp ảnh có đuôi *.tif chứa các lệnh hoạt hình.”
“Tệp ảnh có đuôi *.tif chứa các lệnh hoạt hình.”
Khi bạn muốn đánh dấu một từ hoặc ý nghĩ, hãy sử dụng
lệnh hoặc môi trường.
\emph{<văn bản>}, {\em <văn bản>}, \begin{em} <văn bản> \
end{em}
(Giải pháp đầu tiên không thể được sử dụng cho nhiều đoạn
văn.) Đối với các lớp tài liệu tiêu chuẩn, họ theo dõi phông chữ
hiện tại và đánh dấu phông chữ đó cho phù hợp. Trong trường
hợp của một hình dạng đứng, nó là nghiêng, trong trường hợp
một hình dạng không đứng, nó đã chuyển sang hình dạng
đứng. \emph thực hiện cân bằng chữ nghiêng tự động, nhưng
không phải lệnh \em hoặc môi trường em. Sau đó, chúng ta phải
giải quyết vấn đề này bằng lệnh \/.
7 Ví dụ 2.46 8
‘‘Tệp ảnh có đuôi \emph{*.tif} chứa các lệnh hoạt hình.’’\\
‘‘Tệp ảnh có đuôi {\em *.tif\/} chứa các lệnh hoạt hình.’’
: 2
“Tệp ảnh có đuôi *.tif chứa các lệnh hoạt hình.”
“Tệp ảnh có đuôi *.tif chứa các lệnh hoạt hình.”
Nếu có thể, không sử dụng kiểu in đậm để đánh dấu, vì nó
được dành riêng cho các tiêu đề. Trong thời đại của máy đánh
chữ, chúng được đánh dấu với sự tiết kiệm phông chữ. Nó cũng
có thể được giải quyết trong LATEX:
\so{<văn bản>} %trong gói lệnh soulutf8.sty
7 Ví dụ 2.47 8
\so{Văn bản thưa thớt, có thể gồm nhiều đoạn văn.}
: 2
Vă n b ả n t h ư a thớt, có thể gồm nhiều
đoạn văn.
Các tùy chọn đánh dấu bổ sung bằng cách gạch chân hoặc
gạch chân:
văn bản \underline{văn bản}
văn bản \uline{văn bản} %trong gói ulem.sty
văn bản \uuline{văn bản} %trong gói ulem.sty
văn bản \uwave{văn bản} %trong gói ulem.sty
:::::::::
văn bản \sout{văn bản} %trong gói ulem.sty
văn
///// //////
bản \xout{văn bản} %trong gói ulem.sty
văn
bản \cancel{văn bản} %trong gói cancel.sty
XXX
văn bản XX \bcancel{văn bản} %trong gói cancel.sty
XX
văn
X bản
XX \xcancel{văn bản} %trong gói cancel.sty
Nếu bạn đang sử dụng gói ulem.sty, lệnh \emph sẽ được gạch
dưới. Nếu bạn không muốn điều này, hãy sử dụng tùy chọn
normalem trong gói ulem.sty.
Nó có thể phù hợp để đánh dấu các từ và cụm từ bằng tất
cả các chữ cái viết hoa hoặc trong tất cả các chữ cái viết hoa
trong tất cả các chữ cái viết thường.
\MakeUppercase{<văn bản>}
Nó trích xuất <văn bản> bằng tất cả các chữ cái viết hoa.
7 Ví dụ 2.48 8: 2
\MakeUppercase{Hà Nội} HÀ NỘI
\MakeLowercase{<văn bản>}
Nó trích xuất <văn bản> bằng tất cả các chữ cái viết hoa, nhưng
không thay đổi các chữ cái của các công thức toán học.
\MakeTextLowercase{<văn bản>} %trong gói textcase.sty
Nó trích xuất <văn bản> bằng tất cả các chữ cái viết thường,
nhưng không thay đổi các chữ cái của các công thức toán học.
\NoCaseChange{<văn bản>} %trong gói textcase.sty
Kích thước phông chữ mặc định có thể được đặt trong các
tùy chọn lớp tài liệu. Đối với các lớp bài báo, báo cáo và sách
tiêu chuẩn, có thể chỉ định ba kích thước: 10pt, 11pt và 12pt.
Nếu bạn muốn một kích thước khác, hãy viết phần mở đầu sau
khi tải gói fontenc.sty bằng
\usepackage[fontsize=<cỡ phông>]{scrextend}
hoặc
Nếu bạn đang sử dụng bộ phông chữ Châu Âu Máy tính Hiện
đại mặc định, hãy đảm bảo loại bỏ giới hạn kích thước với gói
anyfontsize.sty. Bạn có thể thay đổi kích thước phông chữ mặc
định ở bất kỳ đâu trong tài liệu:
hoặc
hoặc
Một tùy chọn khác để đặt bất kỳ kích thước phông chữ cơ sở
nào là ở phần sau. Tùy chọn cốt lõi của gói geometry được thảo
luận trong tùy chọn mag.
Các lệnh sau đặt kích thước phông chữ tùy thuộc vào kích
thước phông chữ mặc định:
Bảng sau đây cho thấy kích thước phông chữ của các lệnh này
đối với kích thước phông chữ cơ sở tiêu chuẩn:
\tiny 5 6 6
\scriptsize 7 8 8
\footnotesize 8 9 10
\small 9 10 10,95
\normalsize 10 10,95 12
\large 12 12 14,4
\Large 14,4 14,4 17,28
\LARGE 17,28 17,28 20,74
\huge 20,74 20,74 24,88
\Huge 24,88 24,88 24,88
Đây là các lệnh khai báo, vì vậy chúng có thể được sử dụng
Bạn cũng có thể đặt bất kỳ kích thước phông chữ tương đối
nào:
\scalefont{<tỷ lệ phóng>} %trong gói scalefnt.sty
trong đó <tỷ lệ phóng> chỉ định số lần bạn muốn kích thước
chữ cái cơ sở. Ví dụ {\scalefont {1.5} <văn bản>} văn bản được
hiển thị ở 1,5 lần kích thước phông chữ mặc định.
7 Ví dụ 2.50 8: 2
Hà Nội,{\scalefont{1.5} Hà
Nội}, Hà Nội
Hà Nội, Hà Nội, Hà Nội
Bạn có thể đạt được kích thước phông chữ tuyệt đối bằng
lệnh sau:
\fontsize{<kích thước phông>}{<khoảng cách dòng>}\
selectfont
Ví dụ: văn bản 25 chấm điểm với khoảng cách dòng 12 chấm
điểm có thể được viết như thế này:
7 Ví dụ 2.51 8
Đó là một câu dài không phù hợp với một dòng!\\
{\fontsize{20}{25}\selectfont
Đó là một câu dài không phù hợp với một dòng!}
: 2
Nguyễn Hữu Điển https://www.facebook.com/groups/vietex/
2.7. Kích thước phông chữ 51
Đó là một câu dài không phù hợp với một dòng!
Đó là một câu dài không phù hợp
với một dòng!
Nếu bạn muốn giữ khoảng cách dòng ở kích thước mặc định,
hãy thay thế <khoảng cách dòng> bằng \the\baselineskip.
2.7.5 Đơn vị độ đo
LATEX biết tất cả các đơn vị được sử dụng trong in ấn. Đây
chỉ là một vài độ đo:
pt điểm
mm milimét
cm cm
in inch, 1in = 25,4mm = 72,27pt
ex chiều cao của chữ x trong phông chữ hiện tại
em kích thước phông chữ hiện tại của
Ví dụ, một khoảng cách linh hoạt có thể là một “lò xo” mà
độ bền của nó có thể được chỉ định bằng lệnh sau.
\stretch{<lực lò xo>}
Hoạt động của điều này được minh họa bằng ví dụ sau:
7 Ví dụ 2.52 8
A\hspace{\stretch{1}}B\hspace{\stretch{2}}C
: 2
A B C
Khi đó tỉ số khoảng cách giữa hai chữ A và B với khoảng
Bốn lệnh sau có tác dụng tương tự như \hfill, nhưng lấp đầy
khoảng trống theo các cách sau:
7 Ví dụ 2.53 8
A\hrulefill B C\dotfill D E\rightarrowfill F G\
leftarrowfill H
: 2
A B C . . . . . . . . . . D E−−−−−−−−−−→F G←−−−−−−−−−−H
Bạn cũng có thể chỉ định một khoảng cách linh hoạt như
sau:
\hspace{<kích thước trắng> plus <số thêm> minus <số bớt>}
7 Ví dụ 2.54 8: 2
A\hspace{12pt plus 4pt minus 2pt}B A B
Bạn có thể chỉ định kích thước của bỏ qua dọc bằng lệnh
sau:
\vspace{<kích thước khoảng trắng>}
Khi đó kích thước của không gian dọc là <kích thước khoảng
trắng> + khoảng cách dòng hiện tại. <kích thước khoảng trắng
> cũng có thể là số âm. Lệnh này chỉ hoạt động khi TEX ở chế
độ dọc. Điều này có sẵn, ví dụ, nếu có ít nhất một dòng trống
giữa văn bản và \vspace. Khoảng trống ở đầu và cuối trang bị
hấp thụ mất.
lệnh biết giống như \vspace, nhưng cũng bỏ qua các khoảng
trắng có kích thước đó ở đầu và cuối trang.
Nếu <kích thước khoảng trắng> được chỉ định trong các lệnh
\vspace hoặc \vspace* lớn hơn khoảng trống còn lại ở cuối
gương văn bản, thì sự khác biệt sẽ không xuất hiện ở đầu trang
tiếp theo. Nếu điều này là cần thiết (ví dụ: đối với một loạt
nhiệm vụ mà bạn muốn bỏ qua một lượng không gian nhất
định cho giải pháp sau các tác vụ, ngay cả khi ngắt trang), hãy
sử dụng
\xvspace {<kích thước khoảng trắng>}
lệnh này sẽ được định nghĩa trong phần mở đầu như sau:
\newlength{\vspacex}
\newcommand{\xvspace}[1]{%
\par
\ifdim\dimexpr\pagegoal-\pagetotal<#1
\setlength{\vspacex}{\dimexpr#1+\pagetotal-\pagegoal}%
\pagebreak
\vspace*{\vspacex}
\else
\vspace*{#1}
\fi
}
Các lệnh bổ sung:
\lower <kích thước trắng> \hbox{<văn bản>}
<kích thước trắng> chỉ định <văn bản> thấp hơn bao nhiêu so
với mặc định.
\textuperscript{<văn bản>}
7 Ví dụ 2.55 8
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
54 Chương 2. Những cơ bản soạn thảo bằng LATEX
XX\lower0.5ex\hbox{xxx}, 17\textsuperscript{h},
H\textsubscript{2}O
: 2
XXxxx, 17h , H2 O
Kích thước linh hoạt có thể được chỉ định ở đây chính xác
như trong trường hợp nằm ngang, chỉ \vspace. Các lệnh bổ
sung:
\smallskip % = \vspace{3pt plus 1pt minus 1pt}
\medskip % = \vspace{6pt plus 2pt minus 2pt}
\bigskip % = \vspace{12pt plus 4pt minus 4pt}
\vfill % = \vspace{\fill}
lệnh nhân khoảng cách dòng mặc định với giá trị của <tỷ lệ>.
Lệnh này chỉ đặt trên phần mở đầu của một tệp mới có tác
dụng. nên khó sử dụng từng đoạn.
Người ta dùng gói lệnh setspace.sty, có hai lệnh:
\onehalfspacing và \doublespacing. Hệ số cho khoảng cách
dòng một và hai được sử dụng trong máy đánh chữ phụ thuộc
vào kích thước phông chữ cơ sở:
Khoảng cách một dòng rưỡi a
\onehalfspacing %trong gói setspace.sty
7
\onehalfspacing
Ví dụ 2.56 8
Sai lầm lớn nhất đời người là dùng sức khỏe để đánh đổi lấy
những vật ngoài thân. Bi ai lớn nhất đời người là dùng
sinh mệnh để đổi lấy phiền não và lãng phí lớn nhất đờ
i người.
\singlespacing
: 2
Sai lầm lớn nhất đời người là dùng sức khỏe để đánh đổi
lấy những vật ngoài thân. Bi ai lớn nhất đời người là dùng
sinh mệnh để đổi lấy phiền não và lãng phí lớn nhất đời người.
Khoảng cách dòng kép, có thể được thiết lập bằng lệnh.
\doublespacing %trong gói setspace.sty
7
\doublespacing
Ví dụ 2.57 8
Sai lầm lớn nhất đời người là dùng sức khỏe để đánh đổi lấy
những vật ngoài thân. Bi ai lớn nhất đời người là dùng
sinh mệnh để đổi lấy phiền não và lãng phí lớn nhất đờ
i người.
\singlespacing
: 2
Sai lầm lớn nhất đời người là dùng sức khỏe để đánh đổi
lấy những vật ngoài thân. Bi ai lớn nhất đời người là dùng
sinh mệnh để đổi lấy phiền não và lãng phí lớn nhất đời người.
Khoảng cách dòng ba cũng có thể được chỉ định bằng lệnh.
LATEX thực hiện ngắt dòng tự động, nhưng bạn có thể buộc
ngắt nó nếu cần:
\\
Tương tự như \\ nhưng khoảng cách đến dòng tiếp theo tăng
thêm <kích thước>. Ví dụ \\[2mm]
\\*
Ngắt dòng, nhưng dữ liệu trên dòng trải đều trên dòng đó.
LATEX thực hiện tự ngắt trang. Nếu bạn muốn căn chỉnh
cuối cùng của các trang bão hòa, hãy sử dụng
\flushbottom
Tác dụng của việc này là có thể được hủy bỏ bằng lệnh.
\raggedbottom
Bắt đầu một trang mới (hoặc một cột mới khi lấy hai cột). Điền
vào hàng cuối cùng theo chiều ngang và sau đó đến trang (hoặc
cột) theo chiều dọc với khoảng trống.
\clearpage
Nó khác với lệnh \newpage ở chỗ nó cũng bắt đầu một trang mới
khi nhập vào hai cột và hiển thị cái gọi là môi trường động.
\cleardoublepage
Tương tự như \clearpage, nhưng với cách nhập hai mặt, tài
liệu tiếp tục chỉ được hiển thị trên trang được đánh số lẻ tiếp
theo.
\pagebreak
Tăng kích thước dọc của trang hiện tại bằng <khoảng cách>,
nhưng không điều chỉnh vị trí của chân trang. Ví dụ
\enlargethispage{3mm}.
\expandgethispage*{<khoảng cách>}
Trong trường hợp đoạn văn mới, phải để lại một dòng trống
trong tệp nguồn hoặc lệnh
\par
(Đây là một lỗi phổ biến khi sử dụng ngắt dòng thay vì một
đoạn văn mới. Đây là một lỗi đánh máy, hãy tránh nó!)
Tất cả các đoạn văn đều bắt đầu bằng thụt lề, ngoại trừ
cái gọi là đoạn mở chương. Để bắt đầu những điều này với
thụt lề, hãy tải gói indentfirst.sty hoặc tùy chọn English.ldf
afterindent = force-yes:
\PassOptionsToPackage{defaults = hu-min, afterindent =
force-yes}{english.ldf}
Theo mặc định, đoạn văn là ngắt dòng, nghĩa là các dòng bắt
đầu ở lề trái và kết thúc ở lề phải, ngoại trừ đầu dòng đầu tiên
và cuối dòng cuối cùng.
Các lệnh bổ sung:
\indent
\setlength{\parskip}{<kích thước>}
Tăng khoảng cách giữa hai đoạn văn bằng <kích thước>. Ví
dụ
\verb!\setlength{\parskip}{5pt}!
Trong trường hợp này, dòng bắt đầu đoạn văn cũng bắt đầu
ở lề trái và không có căn lề ở bên phải, do đó không có phân
cách từ. Thực hiện:
\begin {flushleft}
<văn bản>
\end{flushleft}
hoặc
{\raggedright <văn bản> \par}
Sự khác biệt giữa hai giải pháp là môi trường flushleft đặt
các khoảng trống dọc ở đầu và cuối văn bản.
Hãy tưởng tượng một văn bản được đóng ở bên trái, nhưng
bây giờ hãy dịch chuyển từng dòng để dòng kết thúc ở lề phải.
Đây là đóng cửa bên phải. Thực hiện:
\begin{flushright}
<văn bản>
\end{flushright}
hoặc
{\raggedleft <văn bản>\par}
Sự khác biệt giữa hai giải pháp là môi trường phẳng đặt các
khoảng trống dọc ở đầu và cuối văn bản.
Hãy tưởng tượng một văn bản được đóng ở bên trái, nhưng
bây giờ di chuyển từng dòng vào giữa. Thực hiện:
\begin{center}
<văn bản>
\end{center}
hoặc
Sự khác biệt giữa hai giải pháp là môi trường định tâm có
khoảng cách thẳng đứng đặt nó ở đầu và cuối văn bản.
7 Ví dụ 2.58 8
\begin{center}
Đây là một văn bản dài hơn được đặt ở giữa,
vì vậy cũng không có phân tách từ trong đó.
Nhưng chúng ta cũng có thể chỉ định các điểm ngắt dòng: \\
Điều này sẽ nằm trên một dòng riêng biệt. \\ Điều này cũng
sẽ nằm trên một dòng riêng biệt. \\
\end {center}
: 2
Đây là một văn bản dài hơn được đặt ở giữa, vì vậy cũng
không có phân tách từ trong đó. Nhưng chúng ta cũng có
thể chỉ định các điểm ngắt dòng:
Điều này sẽ nằm trên một dòng riêng biệt.
Điều này cũng sẽ nằm trên một dòng riêng biệt.
Để làm nổi bật một trích dẫn nhiều dòng, hãy sử dụng môi
trường trích dẫn:
7 Ví dụ 2.59 8
\begin{quotation}
‘‘Ăn uống quý ở chỗ biết kiêng khem, đọc sách quý ở chỗ biế
t chọn cái hay để đọc, luyện tập quý ở chỗ duy trì bền
lâu’’
\end{quotation}
: 2
“Ăn uống quý ở chỗ biết kiêng khem, đọc sách
quý ở chỗ biết chọn cái hay để đọc, luyện tập quý ở
chỗ duy trì bền lâu”
Bài thơ có thể được định dạng với môi trường verse:
7 Ví dụ 2.60 8
\begin{verse}
\textbf{Thuyền và biển} (Xuân Quỳnh)\\
Em sẽ kể anh nghe\\
Chuyện con thuyền và biển:\\
\quad\\
Từ ngày nào chẳng biết\\
Thuyền nghe lời biển khơi\\
Cánh hải âu, sóng biếc\\
Đưa thuyền đi muôn nơi\\
\dots\dots
\end{verse}
: 2
Thuyền và biển (Xuân Quỳnh)
Em sẽ kể anh nghe
Chuyện con thuyền và biển:
Nơi bạn muốn viết chú thích cuối trang, hãy viết
\footnote{<văn bản chú thich>}
Điều này làm tăng số lượng chú thích lên một. Nếu
\footnote[<số>]{<văn bản chú thich>}
Nếu bạn sử dụng lệnh, số chú thích cuối trang không tăng,
nhưng số bạn đã nhập trong tùy chọn <số> sẽ được in.
Không được có khoảng trắng trước \footnote. Nếu ghi chú
dành cho một từ cụ thể, lệnh được viết ngay sau từ đó, nếu nó
dành cho một câu hoặc một phần của câu, sau dấu câu. Chú
thích cuối trang bao gồm các câu hoàn chỉnh. Vì vậy, bạn phải
bắt đầu bằng một chữ cái viết hoa và kết thúc bằng dấu chấm
câu.
Các lệnh bổ sung:
\footnotemark
Tăng số lượng chú thích lên một và đặt dấu chú thích vào vị
trí đó.
\footnotemark[<số>]
Nó giữ nguyên số chú thích cuối trang và hiển thị ký hiệu chú
thích ở vị trí đó, được cho bởi giá trị của <số>.
\value{<số đếm>}
Chỉ định số chú thích hiện tại, số này có thể được nhập vào
lệnh trước đó thay vì <số đếm>.
\footnotetext{<văn bản chú thích>}
Viết văn bản trong chú thích cuối trang, nhưng không thay đổi
số chú thích và không để lộ dấu chú thích ở vị trí đó.
\footnotetext[<số>]{<văn bản chú thích>}
Viết văn bản trong chú thích cuối trang dưới <số>, nhưng
không thay đổi số chú thích và không để lộ dấu chú thích ở
vị trí đó.
Chú thích cuối trang chỉ có thể chiếm một tỷ lệ nhất định
của trang, vì vậy chú thích dài hơn có thể xuất hiện trên nhiều
trang. Nếu bạn muốn vô hiệu hóa giải pháp này, bạn phải phát
đưa ra
\interfootnotelinepenalty = 10000
Theo mặc định, lề được gọi là chúng được đặt ở ngoài văn
bản. Đối với văn bản hai mặt, lề ngoài ở bên trái đối với các
bên chẵn và ở bên phải đối với các bên được đánh số lẻ. Khi
chọn ở một bên, lề ngoài luôn ở bên phải
Nếu bạn muốn cái gọi là đặt lề ở lề trong, sau đó phát hành
lệnh
\reverseemarginpar
\normalmarginpar
Trong đánh máy hai mặt, các lề sẽ ở bên trái hoặc bên phải.
Nếu bạn muốn chú thích ở bên trái khác với chú thích ở bên
phải, bạn có thể sử dụng như sau:
\marginpar[<lề trái>]{<lề phải>}
Ví dụ: nếu bạn muốn văn bản lề bên trái được căn phải, hãy sử
dụng mã sau:
\marginpar[\raggedleft <văn bản>]{<văn bản>}
Nếu bạn viết ghi chú lề ở đầu đoạn văn, bạn phải đặt trước
lệnh \marginpar bằng lệnh \leftvmode, nếu không sẽ có sự
chênh lệch mức độ giữa ghi chú lề và dòng đầu tiên của đoạn
văn. Điều này là do \marginpar không bắt đầu một đoạn văn
mới.
Không thể sử dụng lệnh \marginpar trong một số trường
hợp. Một trong những trường hợp như vậy là việc sử dụng
nó trong các hộp được mô tả sau. Lệnh \marginnote trong gói
marginnote.sty, không áp dụng các hạn chế này, có thể là một
giải pháp. Lệnh này có thể được sử dụng theo cách tương tự
như \marginpar
rgb Khi sử dụng rgb, ba tham số phải được chỉ định, phân
tách bằng dấu phẩy, cả ba đều là phân số từ 0 đến 1. Đầu
tiên là số lượng màu đỏ, thứ hai là màu xanh lá cây và
thứ ba là màu xanh lam.
HTML Tham số HTML là mã thập lục phân gồm sáu chữ số của
màu. (Xem ví dụ ở đây.) Hai chữ số đầu tiên là tham số
đầu tiên của mã RGB trong hệ thống số 16 chữ số, hai
chữ số tiếp theo là tham số thứ hai của mã RGB trong
hệ thống số 16 chữ số, và cuối cùng hai chữ số cuối cùng
là tham số thứ ba của mã RGB trong hệ thống số 16 chữ
số. Ví dụ: nếu mã RGB cho màu là 186, 85, 211, thì mã
HTML là BA55D3.
cmyk Khi sử dụng cmyk, bốn tham số phải được chỉ định, phân
tách bằng dấu phẩy, mỗi tham số nằm trong khoảng từ 0
đến 1. Đầu tiên là số lượng màu lục lam, thứ hai là màu
đỏ tươi, thứ ba là màu vàng và thứ tư là màu đen.
gray có nghĩa là thang màu xám. Ở đây bạn phải nhập một
tham số là một phân số từ 0 đến 1
số (0 = đen, 1 = trắng).
wave tham số là bước sóng của màu tính bằng nanomet. Giá
trị bước sóng là một phần nhỏ giữa 363 và 814.
Các bảng màu RGB, rgb và HTML về cơ bản giống nhau, ngoại
trừ cách chỉ định ba màu cơ bản là khác nhau. Việc trộn màu
của màn hình được thực hiện theo bảng màu RGB, nhưng máy
in sử dụng bảng màu cmyk. Do đó, nếu bạn muốn tài liệu đã
chỉnh sửa là một ấn phẩm điện tử, tức là để đọc nó trên màn
hình, thì màu sắc được pha trộn bởi gói xcolor.sty phải được
tạo ra tương ứng. Để thực hiện việc này, hãy sử dụng tùy chọn
rgb trong gói xcolor.sty. Nếu tài liệu được in, hãy sử dụng
tùy chọn cmyk trong gói xcolor
Gói xcolor.sty cũng chứa các màu được xác định trước,
chính xác hơn là bạn có thể tham khảo các màu có thông số
nhất định dưới một tên nhất định. Đây là những điều sau đây:
Bạn cũng có thể định nghĩa tên màu bằng lệnh sau:
\definecolor{<tên màu>}{<mô hình>} {<tham số màu>} %trong g
ói xcolor.sty
7 Ví dụ 2.61 8: 2
\definecolor{xam}{gray}{0.8}
\definecolor{nau}{RGB}{128,64,0}
\color{xam}{\rule{1cm}{10pt}}\\
\color{nau}{\rule{1cm}{10pt}}
Bạn cũng có thể nhập tên màu khác bằng cách trộn hai
màu với một tên cụ thể:
<tên màu 1>!<số phần trăm>!<tên màu 2>
Trong trường hợp này 30% xanh lục, chúng ta trộn 70%
vàng. Nếu bạn muốn trộn một màu khác với màu trắng, mã
đơn giản hơn:
<tên màu 1>!<số phần trăm> = <tên màu 1>!<số phần trăm>!
White
Ví dụ green!30
7 Ví dụ 2.63 8: 2
\color{green!30}{\rule{1cm}{10pt}} \\
\color{green}{\rule{1cm}{10pt}}
trong trường hợp này 30% màu xanh lá cây, chúng ta trộn
70% màu trắng. Với kỹ thuật này, bạn thậm chí có thể chỉ định
một tên màu mới bằng cách trộn nhiều màu với một tên nhất
định. Ví dụ
green!30!yellow!20!black
trong trường hợp này 30% màu xanh lá cây, chúng ta trộn
20% màu vàng và 50% màu đen còn lại.
Bạn cũng có thể xác định tên màu với tên màu đã xác định
trước đó:
\colorlet{<tên màu mới>}{<tên màu cũ>} %trong gói xcolor.
sty
7 Ví dụ 2.64 8: 2
\colorlet{donhat}{red!80}
\colorlet{denthat}{black}
\color{donhat}{\rule{1cm}{10pt}} \\
\color{denthat}{\rule{1cm}{10pt}}
Nếu bạn muốn chỉ định phần bổ sung của tên màu, bạn
phải đặt trước nó bằng dấu gạch ngang. Ví dụ, -yellow có
nghĩa là màu bổ sung của màu vàng.
7 Ví dụ 2.65 8: 2
\color{-yellow}{\rule{1cm}{10pt}} \\
\color{yellow}{\rule{1cm}{10pt}}
7 Ví dụ 2.66 8: 2
\colorlet{red}{red!80} Văn bản màu đỏ.
\textcolor{red}{Văn bản màu đỏ.} Văn bản màu xanh
\\ lục.
\textcolor[RGB]{0,255,0} {Văn bản Văn bản màu xám.
màu xanh lục.}\\
{\color {black!50} Văn bản màu xá
m.}
Bạn có thể điều chỉnh độ trong suốt của màu hiện tại của
văn bản bằng các lệnh sau:
\texttransparent{<thông số>}{<một đoạn>} %gói transparent.
sty
\transparent{<thông số>}<nhiều đoạn văn> %gói transparent.
sty
7 Ví dụ 2.67 8
\color{red}Hà Nội, \texttransparent {0.2}{Hà Nội}
: 2
Hà Nội, Hà Nội
Lệnh \sethlcolor chỉ định màu của vùng đánh dấu. Mặc
định là màu vàng. \hl sẽ tô màu nền của <văn bản>, có thể bao
gồm một số dòng hoặc một số đoạn văn.
7 Ví dụ 2.68 8: 2
\hl{Đây là văn bản quan trọ Đây là văn bản quan trọng,
ng, nó được đánh dấu!} nó được đánh dấu!
Nếu bạn đã tải gói xcolor.sty với một số tùy chọn bảng
màu (rgb, cmyk, v.v.), mã trước đó sẽ cho kết quả không chính
xác. Để giải quyết vấn đề này, hãy nhập mã sau sau khi tải
soulutf8.sty (nguồn tại đây):
\usepackage{etoolbox}
\makeatletter
\patchcmd{\SOUL@ulunderline}{\dimen@}{\SOUL@dimen}{}{}
\patchcmd{\SOUL@ulunderline}{\dimen@}{\SOUL@dimen}{}{}
\patchcmd{\SOUL@ulunderline}{\dimen@}{\SOUL@dimen}{}{}
\newdimen\SOUL@dimen
\makeatother
Tham số <độ sâu> của lệnh \setul đặt mức độ dày của
đường gạch chân bên dưới đường cơ bản và <độ dày đường
viền> là độ dày của đường kẻ. Tham số <tên màu> của lệnh
\setulcolor chỉ định màu của gạch dưới. Mặc định là màu
đen. Lệnh \ul gạch dưới phần <văn bản>, phần này có thể bao
gồm một số dòng hoặc một số đoạn văn. Ví dụ
7 Ví dụ 2.69 8
\setul{1pt}{1pt}
\setulcolor{blue}
\ul{Đây là văn bản quan trọng, nó được gạch dưới màu xanh
lam!}
: 2
Đây là văn bản quan trọng, nó được gạch dưới màu xanh
lam!
Lệnh \ul có cùng vấn đề với lệnh \hl và cùng một giải pháp.
Tham số <tên màu> của lệnh \setstcolor chỉ định màu của
gạch ngang. Mặc định là màu đen. Lệnh \st kéo phần <văn
bản>, có thể bao gồm một số dòng hoặc một số đoạn văn. Ví dụ
7 Ví dụ 2.70 8
\setstcolor{blue}
\st{Văn bản này bị gạch ngang màu xanh lam.}
: 2
Văn bản này bị gạch ngang màu xanh lam.
Lệnh \st có cùng vấn đề với lệnh \hl và cùng một giải pháp.
Luôn phải có một nửa dấu trắng không thể tách rời giữa
một số và một đơn vị đo lường.
7 Ví dụ 2.71 8
123\,cm 1200\,km 50\,\% 1000\,Ft 500\,\$ 10\,\AA
: 2
123 cm 1200 km 50 % 1000 Ft 500 $ 10 Å
7 Ví dụ 2.72 8: 2
20\,\textcelsius %gói textcomp.sty 20 ℃1 %5 %
1\,\textperthousand %gói textcomp.sty
5\,\textpertenthousand %gói textcomp.
sty
Có một ngoại lệ cho quy tắc này khi viết một góc theo độ,
phút và giây. Sau đó, không có khoảng trống sau thước đo.
Cách dễ nhất để viết điều này là
\ang{<độ góc>;<độ phút>;<độ dây>} %góc siunitx.sty
Môi trường lặp lại có thể được sử dụng cho các danh sách
không được đánh số. Mỗi mục trong danh sách được giới thiệu
bằng lệnh \item
\begin{itemize}
\item <nội dung thư mục>
\item <nội dung thư mục>
\end{itemize}
Các môi trường này có thể được lồng vào bốn cấp độ sâu. Ví dụ:
7 Ví dụ 3.1 8
Văn bản trước danh sách.
\begin{itemize}
\item Danh sách mục ở cấp độ đầu tiên.
\begin{itemize}
\item Danh sách mục ở cấp độ thứ hai.
\item Mục danh sách khác ở cấp độ thứ hai.
\end{itemize}
\item Mục danh sách khác ở cấp độ đầu tiên.
\end{itemize}
Văn bản sau danh sách.
: 2
Văn bản trước danh sách.
• Danh sách mục ở cấp độ đầu tiên.
– Danh sách mục ở cấp độ thứ hai.
Nếu bạn chỉ muốn thay đổi ký hiệu của một mục danh sách
cụ thể, hãy sử dụng lệnh \item.
Trong tùy chọn, bạn có thể:
7 Ví dụ 3.2 8
\begin{itemize}
\item[\textasteriskcentered] Ôi con sóng ngày xưa.
\item[\textbullet] Và ngày sau vẫn thế.
\item Nỗi khát vọng tình yêu.
\end{itemize}
: 2
* Ôi con sóng ngày xưa.
• Và ngày sau vẫn thế.
• Nỗi khát vọng tình yêu.
Nếu bạn muốn thay đổi ký hiệu cho một mức cụ thể trong
một danh sách nhất định, hãy sử dụng [label=<ký hiệu>] cho
gói lệnh enumitem.sty và [<ký hiệu>] cho gói paralist.sty sau
đây:
7 Ví dụ 3.3 8: 2
\begin{itemize}[label=\ding{43}] ☞ Trước muôn
\item Trước muôn trùng sóng bể trùng sóng bể
\item Em nghĩ về anh, em
\end{itemize} ☞ Em nghĩ về anh,
em
Nếu bạn muốn thay đổi các ký tự mặc định trong danh sách,
hãy nhập như sau thì là ở:
\renewcommand{\labelitemi}{<cấp độ 1.>}%trong gói enumitem
.sty
\renewcommand{\labelitemii}{<cấp độ 2.>}
\renewcommand{\labelitemiii}{<cấp độ 3.>}
\renewcommand{\labelitemiv}{<cấp độ 4.>}
7 Ví dụ 3.5 8
\renewcommand{\labelitemi}{\ding{42}}
\renewcommand{\labelitemii}{\ding{43}}
\renewcommand{\labelitemiii}{\ding{44}}
\renewcommand{\labelitemiv}{\ding{45}}
\begin{itemize}
\item Mục danh sách.
\begin{itemize}
\item Mục danh sách.
\begin{itemize}
\item Mục danh sách.
\begin{itemize}
\item Mục cuối.
\end{itemize}
\end{itemize}
\end{itemize}
\end{itemize}
: 2
☛ Mục danh sách.
☞ Mục danh sách.
✌ Mục danh sách.
✍ Mục cuối.
Môi trường lặp lại để lại một khoảng trống bổ sung theo
chiều dọc giữa mỗi mục danh sách. Nếu bạn không muốn điều
này, hãy sử dụng lệnh \setlist{noitemsep} của gói enumitem.
sty. Điều này sẽ được sử dụng chính xác như môi trường lặp
lại được mô tả ở trên.
7 Ví dụ 3.6 8: 2
% \setlist{noitemsep} Văn bản trước danh
Văn bản trước danh sách. sách.
\begin{itemize}
☞ Mục danh sách
\item[\ding{43}] Mục danh sách
\item[\ding{47}] Mục danh sách ✏ Mục danh sách
khác khác
\end{itemize} Văn bản sau danh sách.
Văn bản sau danh sách.
7 Ví dụ 3.7 8: 2
\begin{description} Ngày đêm không ngủ
\item[Ngày đêm] không ngủ đư
được
ợc
\item [Lòng em] nhớ đến anh Lòng em nhớ đến anh
\end{description}
Theo mặc định, nhãn được in đậm. Ví dụ: bạn có thể thay
đổi điều này thành chữ nghiêng bằng cách gõ lệnh sau
\renewcommand{\descriptionlabel}[1] {\hspace{\labelsep}
\normalfont\itshape#1}
7 Ví dụ 3.8 8
\renewcommand{\descriptionlabel}[1]{\hspace{\labelsep}
\normalfont\itshape#1}
\begin{description}
\item[Sai lầm] lớn nhất đời người là dùng sức khỏe để đánh
đổi lấy những vật ngoài thân.
\item [Bi ai] lớn nhất đời người là dùng sinh mệnh để đổi
lấy phiền não
\item[và lãng phí] lớn nhất đời người là dùng tính mạng để
giải quyết rắc rối do bản thân mình tạo ra!
\end{description}
: 2
Sai lầm lớn nhất đời người là dùng sức khỏe để đánh đổi
lấy những vật ngoài thân.
Bi ai lớn nhất đời người là dùng sinh mệnh để đổi lấy
phiền não
và lãng phí lớn nhất đời người là dùng tính mạng để giải
quyết rắc rối do bản thân mình tạo ra!
Nếu bạn muốn loại bỏ thêm khoảng trống theo chiều dọc
giữa các mục danh sách, hãy sử dụng môi trường lệnh lệnh \
7 Ví dụ 3.9 8
%\setlist{noitemsep}
\begin{description}
\item[Tiền bạc] khó mua được sức khỏe nhưng sức khỏe sẽ đượ
c tăng cường hơn nhờ tiền bạc.
\item [Tiền bạc] khó mua được hạnh phúc nhưng muốn có hạnh
phúc, buộc phải có sức khỏe.
\end{description}
: 2
Tiền bạc khó mua được sức khỏe nhưng sức khỏe sẽ được
tăng cường hơn nhờ tiền bạc.
Tiền bạc khó mua được hạnh phúc nhưng muốn có hạnh
phúc, buộc phải có sức khỏe.
Môi trường liệt kê cho danh sách được đánh số. Mỗi mục
trong danh sách được đặt trước bằng lệnh \item
\begin{enumerate}
\item <phần tử danh sách>
\item <phần tử danh sách>
\end{enumerate}
Các môi trường này có thể được lồng vào bốn cấp độ sâu. Việc
đánh số các cấp trong trường hợp tùy chọn theo mặc định: chữ
số Ả Rập, chữ thường của bảng chữ cái Latinh, chữ thường của
bảng chữ cái Hy Lạp, chữ hoa của bảng chữ cái Latinh. Ví dụ:
7 Ví dụ 3.10 8: 2
Văn bản trước danh sách. Văn bản trước danh sách.
\begin{enumerate}
1. Ở ngoài kia đại dương
\item Ở ngoài kia đại dương
\begin{enumerate} 1.1. Trăm nghìn con
\item Trăm nghìn con sóng đ sóng đó
ó 1.2. Con nào chẳng tới
\item Con nào chẳng tới bờ bờ
\end{enumerate}
\item Dù muôn vời cách trở 2. Dù muôn vời cách trở
\end{enumerate} Văn bản sau danh sách.
Văn bản sau danh sách.
Nếu bạn không muốn đánh số một mục danh sách cụ thể
trong danh sách được đánh số, nhưng chỉ thêm một ký tự, bạn
có thể chỉ định điều này trong tùy chọn lệnh \item:
Nếu bạn chỉ muốn thay đổi cách đánh số của một cấp cụ thể
trong một danh sách nhất định, hãy sử dụng cách sau:
\begin{enumerate} [<nhãn>] %trong gói enumitem.sty
\item <Danh sách 1>
\item <Danh sách 2>
\end{enumerate}
Mỗi cấp độ trong số bốn cấp độ có một cái gọi là với bộ đếm:
enumi là tên của số đếm cấp 1
enumii là tên của số đếm cấp 2
enumiii là tên số đếm cấp 3
enumiv là tên của số đếm cấp 4
Có một số cách để hiển thị bộ đếm:
\arabic{<số đếm>} Với chữ số Ả Rập (1, 2, 3, ...).
\roman{<số đếm>} Với một chữ số La mã nhỏ (i, ii, iii, ...).
\Roman{<số đếm>} Với một chữ số La Mã lớn (I, II, III, ...).
\alph{<số đếm>} Với các chữ cái viết thường của bảng chữ cái
Latinh (a, b, c, ...).
\Alph{<số đếm>} Với các chữ cái viết hoa của bảng chữ cái Lat-
inh (A, B, C, ...).
\greek{<số đếm>} trong gói moreenum.sty. Với các chữ cái viết
thường của bảng chữ cái Hy Lạp (α, β, γ,, ...).
\Gree{<số đếm>} trong gói moreenum.sty. Các chữ cái viết hoa
trong bảng chữ cái Hy Lạp ( A, B, Γ...).Ví dụ
\Roman{enumii}
in số cấp thứ hai hiện tại của danh sách đã cho với một chữ số
La Mã lớn. Nếu bạn muốn thay đổi cách đánh số mặc định của
cấp đầu tiên thành đánh số La Mã lớn, bạn có thể làm như vậy
với mã sau:
\renecommand{\theenumi}{\Roman{enumi}}
Bạn thậm chí có thể đặt cách số này được hiển thị. Ví dụ:
nếu bạn muốn nó được in đậm sau dấu chấm, hãy làm như
sau:
\renecommand{\labelenumi}{\bfseries \theenumi.}
Hãy thử mã sau
\renewcommand{\theenumi}{\arabic{enumi}}
\renewcommand{\theenumii}{\alph{enumii}}
\renewcommand{\theenumiii}{\roman{enumiii}}
\renewcommand{\theenumiv}{\Alph{enumiv}}
\renewcommand{\labelenumi}{\theenumi.}
\renewcommand{\labelenumii}{\itshape(\theenumii)}
\renewcommand{\labelenumiii}{\theenumiii.}
\renewcommand{\labelenumiv}{\theenumiv.}
7 Ví dụ 3.15 8: 2
\begin{enumerate}
1. Cuộc đời tuy dài thế
\item Cuộc đời tuy dài thế
\begin{enumerate} (a) Năm tháng vẫn đi
\item Năm tháng vẫn đi qua
qua
i. Như biển kia
\begin{enumerate}
\item Như biển kia dẫu dẫu
\begin{enumerate} A. Mây vẫn
\item Mây vẫn bay bay
\end{enumerate}
\item Như biển kia dẫu ii. Như biển kia
\end{enumerate} dẫu
\item Năm tháng vẫn đi (b) Năm tháng vẫn đi
qua qua
\end{enumerate}
\item Cuộc đời tuy dài thế 2. Cuộc đời tuy dài thế
\end{enumerate}
Một ví dụ khác
\renewcommand{\theenumi}{\arabic{enumi}}
\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\theenumiii}{\arabic{enumiii}}
\renewcommand{\labelenumi}{\theenumi.}
\renewcommand{\labelenumii}{\theenumi.\theenumii.}
\renewcommand{\labelenumiii}{\theenumi.\theenumii.\
theenumiii.}
7 Ví dụ 3.16 8: 2
\begin{enumerate}
1. Cuộc đời tuy dài thế
\item Cuộc đời tuy dài thế
\begin{enumerate} 1.1. Năm tháng vẫn đi
\item Năm tháng vẫn đi qua
qua
1.1.1. Như biển kia
\begin{enumerate}
\item Như biển kia dẫu dẫu rộng
rộng 1.2. Năm tháng vẫn đi
\end{enumerate} qua
\item Năm tháng vẫn đi
qua 2. Cuộc đời tuy dài thế
\end{enumerate}
\item Cuộc đời tuy dài thế
\end{enumerate}
Bạn có thể thêm các lệnh mới vào bộ đếm. Ví dụ: sau khi
tải gói pifon.sty, đoạn mã sau
\newcommand{\dingI}[1]
{\ifcase\value{#1}\or\ding{172}\or\ding{173}\or\ding{174}\
or\ding{175}\or\ding{176}\or\ding{177}\or\ding{178}\or\
ding{179}\or\ding{180}\or\ding{181}\else\ding{109}\fi}
định nghĩa lệnh \dingI{<số đếm>} hiển thị bộ đếm như sau: ①,
②,...,⑩, ❍,.... Một ví dụ khác, cũng sau khi tải gói pifon:
\newcommand{\dingII}[1]
{\ifcase\value{#1}\or\ding{182}\or\ding{183}\or\ding{184}\
or\ding{185}\or\ding{186}\or\ding{187}\or\ding{188}\or\
ding{189}\or\ding{190}\or\ding{191}\else\ding{108}\fi}
xác định lệnh \dingII{<số đếm>} hiển thị bộ đếm như sau:
❶,❷,...,❿, ●,... Sau đó đặt lại hai cấp đầu tiên như sau:
\renewcommand{\theenumi}{\dingI{enumi}}
\renewcommand{\theenumii}{\dingII{enumii}}
\renewcommand{\labelenumi}{\theenumi}
\renewcommand{\labelenumii}{\theenumii}
7 Ví dụ 3.17 8: 2
\begin{enumerate}
①. Ôi con sóng ngày xưa.
\item Ôi con sóng ngày xưa.
\item Và ngày sau vẫn thế. ②. Và ngày sau vẫn thế.
\begin{enumerate} ❶. Em nghĩ về biển
\item Em nghĩ về biển lớn lớn
\item Từ nơi nào sóng lên?
\end{enumerate} ❷. Từ nơi nào sóng
\item Nỗi khát vọng tình yê lên?
u. ③. Nỗi khát vọng tình yêu.
\end{enumerate}
Có một cách khác để định hình lại toàn cầu kiểu đánh số
của các cấp:
\setdefaultenum{<dấu cấp 1>}{<dấu cấp 2>}{<dấu cấp 3>} {<dấu c
ấp 4>}
%%trong gói lệnh paralist
Nếu bạn không muốn xác định lại kiểu đánh số của một
cấp, hãy để trống khoảng trống của cấp đó. Sau đó. đánh <dấu
cấp ...> có thể chứa bất kỳ ký tự nào, nhưng năm ký tự chịu
trách nhiệm thiết lập kiểu đánh số:
1 đánh số Ả Rập
i đánh số la mã nhỏ
I đánh số La Mã lớn
a đánh số chữ thường của bảng chữ cái Latinh (chữ và số)
A chữ hoa bảng chữ cái Latinh (chữ và số)
7 Ví dụ 3.18 8
\setdefaultenum{\bfseries I. {Câu thơ.}}{\itshape (a)}{i)}{
A)}
\begin{enumerate}
\item Năm tháng vẫn đi qua
\begin{enumerate}
\item Năm tháng vẫn đi qua
\begin{enumerate}
\item Năm tháng vẫn đi qua
\begin{enumerate}
7 Ví dụ 3.19 8
\begin{enumerate}
\item Đây là một mục trong danh sách.
\item \label{lite:01} Đây là một mục danh sách khác.
\end{enumerate}
Trong danh mục \ref{lite:01}. ~ Do mục danh sách \dots.
: 2
1. Đây là một mục trong danh sách.
2. Đây là một mục danh sách khác.
Trong danh mục 2. Do mục danh sách . . . .
Điều gì xảy ra nếu chúng ta muốn tham chiếu đến một phần
7 Ví dụ 3.20 8
\begin{enumerate}
\item Đây là một mục trong danh sách.
\begin{enumerate}
\item \label{lite:02} Đây là một mục danh sách khác.
\end{enumerate}
\end{enumerate}
Trong danh mục \ref{lite:02}. ~ Do mục danh sách \dots.
: 2
1. Đây là một mục trong danh sách.
(a) Đây là một mục danh sách khác.
Trong danh mục a. Do mục danh sách . . . .
Chúng ta thấy rằng không chỉ số lượng của mục danh sách
nhất định được hiển thị, mà còn hiển thị mục danh sách mà nó
nằm ở phía trước nó. Mục danh sách này được gọi là tiếp đầu
ngữ. Các tiền tố này có thể được thay đổi. Ví dụ
\makeatletter
\renewcommand{\p@enumii}{\theenumi} % tiếp đầu bậc 2.
\renewcommand{\p@enumiii}{\p@enumii(\theenumii)} % bậc 3.
\renewcommand{\p@enumiv}{\p@enumiii\theenumiii-} % bậc 4.
\makeatother
\begin{compactenum} % paralist.sty
\item <danh mục danh sách>
\item <danh mục danh sách>
\end {compactenum}
7 Ví dụ 3.21 8: 2
Văn bản trước. Văn bản trước.
\begin{compactenum} 1. Dữ dội và dịu êm
\item Dữ dội và dịu êm (a) Ồn ào và lặng lẽ
\begin{compactenum}
văn bản sau.
\item Ồn ào và lặng lẽ
\end{compactenum}
\end{compactenum}
văn bản sau.
<nhãn> có thể được đặt chính xác như được mô tả cho môi
trường liệt kê (mặc định câu lệnh: 1.).
7 Ví dụ 3.22 8 : 2
\begin{inparaenum}
1. Dữ dội và dịu êm. 2. Ồn ào và
\item Dữ dội và dịu êm
lặng lẽ
.
\item Ồn ào và lặng lẽ
\end{inparaenum}
Bạn có thể muốn đọc phần này nếu bạn đã xem lại các mô
tả trước đó của danh sách. Chúng bao gồm một số tùy chọn cài
đặt. Bây giờ chúng ta giới thiệu gói enumitem, với các cài đặt
này và nhiều cài đặt khác có thể được chỉ định một cách thuận
tiện.
3. Các khoảng trắng ngang được đặt xung quanh các nhãn
của danh sách mô tả. Để giải quyết vấn đề, sau khi tải
enumitem, hãy nhập nội dung sau vào phần mở đầu:
\refreshcommand{\descriptionlabel}[1]{{\normalfont \
bfseries # 1}.}
Do đó, các tham số này (ngoại trừ labelsep*) có thể được đặt
thành ! dấu, có nghĩa là nó tính toán giá trị của nó dựa trên
những gì bạn nhập. Ví dụ
\setlist[enumerate,1]{labelindent=1cm,labelwidth=1cm,
labelsep*=1cm,
itemindent=1cm,leftmargin=!}
hoặc
\setlist[enumerate,1]{labelindent=0cm,labelwidth=1cm,
labelsep=1cm,
leftmargin=0cm,itemindent=!}
Để có danh sách nhỏ gọn, bạn có thể đặt lại bằng hai thông số
sau
noitemsep Đặt lại phân tích cú pháp và itemsep. Ví dụ \setlist
[enumerate]{noitemsep}.
nosep Đặt lại tất cả khoảng cách theo chiều dọc trong danh
sách. Ví dụ \setlist{nosep}.
Định dạng nhãn
Sau đây là để thiết lập các nhãn danh sách.
align = <hướng> Căn chỉnh nhãn ở bên trái hoặc bên phải của
trong trường hợp lặp lại các nhãn mức lần lượt là •, ••,
• • • và • • ••, trong khi các nhãn mức liệt kê tương ứng là
1, 1.1, 1.1.1. và 1.1.1.1, trong đó 1 được thay thế bằng số
tương ứng với mục danh sách.
ref = <lệnh ký hiệu> Định dạng một tham chiếu chéo đến một
mục danh sách được đánh số nhất định. Ví dụ: sau khi tải
gói moreenum.sty
\setlist[enumerate,3]{label=\textit{\greek*)},
ref=\theenumi\theenumii\greek*}
font = <lệnh phông> Đặt loại phông chữ của nhãn. Nó chủ yếu
được sử dụng cho các danh sách mô tả. Ví dụ \setlist[
description]{font=\normalfont\itshape}
style = <tên phong cách> Kiểu nhãn danh sách mô tả. <tên
phong cách> có thể là:
standard Đây là cài đặt mặc định. Trong trường hợp này,
nhãn chỉ có thể là một dòng. Nội dung của danh sách
bắt đầu trên dòng nhãn.
unboxed Nó khác với giá trị tiêu chuẩn ở chỗ nhãn có thể
có nhiều dòng.
nextline Nó khác với giá trị không được đóng hộp ở chỗ
nội dung của danh sách bắt đầu trên dòng sau nhãn.
Cài đặt thêm
Một số cài đặt bổ sung:
first = <mã lệnh> Giải thích <mã l> trước lệnh \item đầu tiên
trong môi trường danh sách nhất định.
after = <mã lệnh> Giải thích <mã lệnh> trước lệnh \end đóng
danh sách trong môi trường danh sách nhất định. Ví dụ
\setlist[enumerate,1]{first=\item[]\hrulefill,after=\
item[]\hrulefill}
Bạn có thể định dạng cục bộ một danh sách cụ thể trong
tùy chọn môi trường danh sách:
\begin{<tên môi trường danh sách>} [<định dạng>]
\item ...
\end{<tên môi trường danh sách>}
<định dạng> có thể được sử dụng chính xác như trong cài
đặt chung.
7 Ví dụ 3.24 8: 2
\begin{itemize}[nosep, • Chỉ có biển mới biết
label= \textbullet] • Thuyền đi đâu, về đâu
\item Chỉ có biển mới biết
\item Thuyền đi đâu, về đâu
\end{itemize}
Mục nhập ngắn cho nhãn danh sách được đánh số có thể
chứa bất kỳ ký tự nào, nhưng năm ký tự chịu trách nhiệm
thiết lập kiểu đánh số
1 đánh số Ả Rập
i đánh số la mã nhỏ
I đánh số La Mã lớn
a đánh số chữ thường của bảng chữ cái Latinh (chữ và số)
A chữ hoa bảng chữ cái Latinh (chữ và số)
Mục từ viết tắt chỉ có thể chứa một trong các chữ cái này.
Nếu bạn muốn nhập một trong năm ký tự này không phải dưới
dạng ký hiệu kiểu đánh số mà là một chữ cái thực, hãy đặt nó
trong dấu ngoặc đơn. Ví dụ
7 Ví dụ 3.26 8: 2
\begin{enumerate}[\bfseries I. Câu. Nếu từ giã
I. {Câu}., leftmargin=* thuyền rồi
,nosep] II. Câu. Biển chỉ còn
\item Nếu từ giã thuyền rồi
sóng gió
\item Biển chỉ còn sóng gió
\end{enumerate}
7 Ví dụ 3.27 8: 2
\begin{enumerate}[(\itshape (i) Nếu phải cách xa anh
i\normalfont ),nosep] (ii) Em chỉ còn bão tố
\item Nếu phải cách xa anh
\item Em chỉ còn bão tố
\end{enumerate}
Nếu bạn muốn sử dụng danh sách theo hàng, bạn có thể
sử dụng tùy chọn inline trong gói enumitem.sty. (Nghĩa là phải
khai báo \usepackage[inline]{enumitem}) Sau đó, hiển thị danh
7 Ví dụ 3.29 8: 2
\begin{enumerate*} 1. Cơm cá 2. Cá cơm
\item Cơm cá
\item Cá cơm
\end{enumerate*}
Bạn cũng có thể xác định môi trường danh sách của riêng
mình bằng lệnh sau:
<loại dánh sách> có thể là liệt kê, lặp lại hoặc mô tả, tùy
thuộc vào việc bạn muốn xác định danh sách được đánh số,
không được đánh số hay mô tả. <Số cấp tối đa> chỉ định số cấp
mà danh sách đã xác định có thể được lồng vào nhau. Lệnh
này cũng tạo bộ đếm mức max cho <tên danh sách>i, <tên danh
sách>ii, <tên danh sách>iii, <tên danh sách>iv, v.v. đó sẽ là bộ
đếm cho các cấp độ khác nhau. Ví dụ
\newlist{steps}{enumerate}{2}
định nghĩa một môi trường danh sách được đánh số gọi là
các bước có thể lồng vào nhau sâu đến hai cấp. Sau đó, điều
này có thể được thiết lập bằng lệnh \setlist giống như với các
môi trường danh sách khác. Ví dụ
\setlist[steps,1]{label=\textbf{Bước \arabic*.},align=left}
\setlist[steps,2]{label=(\alph*)}
Nếu một mục được đánh số được tìm thấy cần được tham
chiếu, thì trước tiên nó phải được gắn nhãn
\label{<tên nhãn>}
bằng lệnh <tên nhãn> có thể là tùy ý, nhưng bạn nên tham
khảo một số lời khuyên. Trước tiên, nên chỉ ra loại phần tử
mà chúng ta đang đề cập đến (chương, phần, hình, bảng, v.v.).
Điều này sẽ giúp bạn tìm kiếm các thẻ sau này dễ dàng hơn
nhiều. Sau đó, bạn có thể muốn đặt một số dấu câu. Khuyến
nghị chung cho điều này là dấu hai chấm. Cuối cùng, nhãn
phải đề cập đến nội dung của phần tử, và không có nghĩa là
nó, bởi vì điều đó sẽ gây tổn hại đến bản chất của tham chiếu
chéo tự động. Bạn có thể ngăn ngừa nhiều lỗi khó hiểu bằng
cách không sử dụng các chữ cái có dấu, khoảng trắng và các ký
tự hoạt động trong nhãn . Ví dụ, sau này chúng ta sẽ thấy rằng
bạn có thể tạo một danh sách được đánh số với môi trường liệt
kê, trong đó bạn bắt đầu từng mục danh sách bằng lệnh \item:
\begin{enumerate}
\item Một mục trong danh sách.
\item Một mục danh sách khác.
\end{enumerate}
Để tham chiếu mục 2 trong danh sách, hãy sửa đổi dòng
trong mã như sau:
\item \label{item:01} Đây là một mục danh sách khác.
Tiền tố trong nhãn là danh sách, cho biết rằng nó đề cập
đến một mục danh sách. Sau đó, nó không phải là dấu hai
chấm thường được khuyến khích. Sau đó đến tên của chính
nó, bây giờ là 01.
7 Ví dụ 3.30 8: 2
\begin{enumerate} 1. Một mục trong danh
\item Một mục trong danh sá sách.
ch.
\item \label{item:01} Một m 2. Một mục khác danh
ục khác danh sách. sách.
\end{enumerate}
Câu hỏi duy nhất là làm thế nào để tham chiếu đến mục
được gắn thẻ. Theo mặc định, một
\ref{<tên nhãn>}
bạn có thể làm điều này bằng một lệnh. Tiếp tục ví dụ trước:
7 Ví dụ 3.31 8: 2
Xem \ref{item:01}.~Một mục Xem 2. Một mục khác...
khác...
Khi chúng ta dán nhãn một đối tượng, LATEX không chỉ biết
số sê-ri đã cho mà còn biết được đối tượng đó ở trang nào. Số
trang cho một nhãn cụ thể là
\pageref{<tên nhãn>}
7 Ví dụ 3.32 8: 2
Xem \ref{item:01}.~Một mục Xem 2. Một mục khác... ở
khác... trang 97.
ở trang \pageref{item:01}.
Vietex có thể xử lý các thẻ một cách độc lập với LATEX có
nghĩa là bạn có thể biết trước bản dịch LATEX nếu có thẻ mà
bạn đang đề cập đến hoặc nếu bạn đã gán thẻ cho hai mục
riêng biệt. Một trợ giúp khác để sử dụng các thẻ trong Vietex
4.0 là liệt kê các thẻ hiện có mà từ đó bạn có thể dễ dàng chọn
thẻ nào bạn muốn liên kết.
Kết quả của \pageref{<tên nhãn>} là số trang nơi lệnh \
label{<tên nhãn> được phát hành, trong khi kết quả của lệnh
\ref{<tên nhãn>} là hiện tại khi \label{<tên nhnã>} được phát
hành.
\@currentlabel
nội dung, là số sê-ri của mục đã cho theo mặc định. Điều
này cũng có thể được xác định lại. Ví dụ
\section{Luật số lớn}
\makeatletter
\def \@currentlabel {,, Luật số lớn ’’}
\makeatother
\label{sec:nszt}
phần \ref {sec-nszt}
1. Luật số lớn
phần „Luật số lớn”
Nguyên văn là một phần của tệp nguồn, không phần nào
được giải thích, dịch, nhưng xuất hiện trong tài liệu như trong
tệp nguồn. Nếu văn bản nguyên văn không dài hơn một dòng
đầu vào, hãy sử dụng
Nếu bạn nhập \verb* thay vì \verb, sẽ xuất hiện trong kết
quả thay vì dấu cách. Ví dụ
7 Ví dụ 3.34 8: 2
\verb*|sách \LaTeX\ hay|\\ sách␣\LaTeX\␣hay
\verb*+mã \LaTeX + mã␣\LaTeX␣
Lệnh \verb hoặc \verb* không thể được đặt trong đối số
của các lệnh khác. Nếu bạn nhập nhiều hơn một dòng đầu vào
dưới dạng nguyên văn, hãy sử dụng môi trường verbatim hoặc
verbatim*.
7 Ví dụ 3.35 8: 2
\begin{verbatim}
\LaTeX\ văn bản \LaTeX\ văn bản
\LaTeX\ mã lệnh \LaTeX\ mã lệnh
\end{verbatim}
\begin{verbatim*} \LaTeX\␣văn␣bản
\LaTeX\ văn bản \LaTeX\␣mã␣lệnh
\LaTeX\ mã lệnh
\end{verbatim*}
Các môi trường này không thể được đưa vào các đối số của
lệnh.
Chúng ta có thể thực hiện tất cả những điều này một cách
linh hoạt hơn nữa với gói fancyvrb.sty. Việc sử dụng gói không
được trình bày chi tiết, Người đọc sẽ tìm thấy mọi thứ trong
tài liệu của nó. Chúng ta minh họa kiến thức của bạn chỉ bằng
một ví dụ:
7 Ví dụ 3.36 8
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
100 Chương 3. Danh sách và tham chiếu chéo
\begin{Verbatim}[formatcom={\color{violet}\footnotesize},
showspaces,frame=single,rulecolor=\color{red},numbers=left]
\LaTeX: Nếu phải cách xa anh
\LaTeX: Em chỉ còn bão tố
\end{Verbatim}
: 2
1 \LaTeX:␣Nếu␣phải␣cách␣xa␣anh
2 \LaTeX:␣Em␣chỉ␣còn␣bão␣tố
Nếu bạn cần đặt một lệnh nguyên văn trong một đối số
cho một lệnh khác, gói fancyvrb.sty sẽ cung cấp một giải pháp
bằng cách sử dụng như sau:
\SaveVerb{<tên>}|<văn bản giữ nguyên>| %trong gói fancyvrb
.sty
\UseVerb[<tùy chọn>]{<tên>} %trong gói fancyvrb.sty
Đây là | dấu phân tách có quy tắc tương tự như lệnh \verb.
<tùy chọn> có thể giống như đối với môi trường Verbatim. Ví dụ:
nếu bạn muốn thêm văn bản nguyên văn vào ghi chú bên, bạn
có thể làm như sau:
\SaveVerb{latex} | \LaTeX\ văn bản|
\marginpar{\UseVerb[formatcom = {\tiny}, showspaces] {latex
}}
Giải pháp trước đây cũng tốt cho chú thích cuối trang, chỉ
khi đó bạn cần nhập lệnh \footnote thay vì \marginpar. Nhưng
đối với phần chú thích cuối trang, gói fancyvrb cũng cung cấp
một giải pháp đơn giản hơn.
\VerbatimFootnotes %trong gói fancyvrb.sty
, sau đó nguyên văn có thể được sử dụng trong đối số của lệnh
\footnote, ví dụ: mã này cũng hoạt động:
\footnote{\verb|\LaTeX\ mã nguồn|}
Ví dụ
\begin{filecontents*}[overwrite]{vidutep.tex}
\LaTeX
\end{filecontents*}
điều này tạo ra một tệp vidutep.tex trong thư mục hiện tại với
nội dung của nó
\LaTeX
Nếu tệp vidutep.tex đã tồn tại, nó sẽ ghi đè nội dung của
nó. Các tùy chọn bổ sung cho tác vụ này được bao gồm trong
gói newfile.sty và answers.sty.
Môi trường writeverbatim không thể được đặt trong một đối
số lệnh. Việc sử dụng các lệnh này có thể được minh họa bằng
đoạn mã sau:
7
\newoutputstream{proba}
Ví dụ 3.37 8
\openoutputfile{sample.tex}{proba}
AAA
\begin {writeverbatim}{proba}
Nó lưu điều này dưới dạng nguyên văn trong \texttt{sample.
tex},
\end {writeverbatim}
BBB
\begin{writeverbatim}{proba}
sau đó thêm điều này.
\end{writeverbatim}
CCC
\closeoutputstream{proba}
Trong phần này, chúng ta đã đặt cho quá trình lưu một tên
proba, tên này sẽ lưu nội dung của môi trường writeverbatim
với proba trong tệp sample.tex dưới dạng văn bản nguyên văn.
Nếu có nhiều môi trường như vậy, chúng sẽ nối nội dung của
chúng. Nếu tệp sample.tex đã tồn tại, trước tiên, nội dung của
nó sẽ bị xóa bởi \openoutputfile{sample.tex}{proba}. Bạn có
thể đóng quá trình lưu bằng lệnh \closeoutputstream{proba}.
Vì vậy, dịch mã này là kết quả
: 2
AAA BBB CCC
và một tệp sample.tex sẽ được tạo trong thư mục tài liệu
chứa nội dung
Sử dụng lệnh sau để lưu văn bản cụ thể trong một tệp bằng
cách giải thích các lệnh trong đó:
Ví dụ
\newoutputstream{proba}
\openoutputfile{minta.tex}{proba}
\addtostream{proba}{\thepage}
\closeoutputstream{proba}
Trong trường hợp này, số trang hiện tại được bao gồm trong
tệp sample.tex. Nếu bạn không muốn giải thích bất kỳ lệnh nào
có trong <văn bản> trong lệnh \addtostream, hãy chạy lệnh . Ví
dụ
\newoutputstream{proba}
\openoutputfile{minta.tex}{proba}
\addtostream{proba}{
\protect\section{Tiêu đề}
Số phần hiện tại: \thesection}
\closeoutputstream{proba}
Trong trường hợp này, nội dung của tệp minta.tex sẽ là:
\section{Title}
Số phần hiện tại: 13,2
Nếu bạn tạo tệp <tên tệp> theo cách trước đó, bạn có thể tải
nó tại một điểm cụ thể trong tệp nguồn bằng lệnh sau:
\input{<tên tệp>}
Ví dụ
7 Ví dụ 3.38 8: 2
\newoutputstream{dongthu} AAA BBB
\openoutputfile{minta.tex}{dongthu}
\begin{writeverbatim}{dongthu}
BBB
\end{writeverbatim}
\closeoutputstream{dongthu}
AAA
\input{minta.tex}
trong đó <tên dòng xử lý> không giống với đầu ra, nhưng <tên
tệp thì có. Ví dụ
7 Ví dụ 3.39 8: 2
\newinputstream{probainput} BBB
\openinputfile{minta.tex}{probainput} AAA
\readstream{probainput}
\closeinputstream{probainput}
AAA
\newoutputstream{donginput}
\openoutputfile{minta.tex}{donginput}
\begin{writeverbatim}{donginput}
BBB
\end{writeverbatim}
\closeoutputstream{donginput}
Nhược điểm của giải pháp này là sẽ báo lỗi ở lần dịch đầu
tiên, vì lúc đó nó không tìm được tệp sample.tex mà sẽ bị loại ở
lần dịch thứ hai. Nếu bạn cũng không muốn gặp lỗi trong bản
dịch đầu tiên, hãy nhập nội dung sau vào đầu phần mở đầu:
\usepackage{silence}
\ErrorsOff*
Nếu <tên tệp> không được chỉ định làm tùy chọn, nó giống như
<tên dòng xử lý>. Ví dụ hiệu ứng tương tự như mã trước đó đạt
được khi tải gói answers.sty, sử dụng mã:
7 Ví dụ 3.40 8: 2
\Opensolutionfile{minta} AAA BBB CCC
AAA
\begin{Filesave}{minta}
Nó lưu điều này dưới dạng nguyên văn
trong \texttt{minta.tex},
\end{Filesave}
BBB
\begin{Filesave}{minta}
sau đó thêm điều này.
\end{Filesave}
\Closesolutionfile{minta}
CCC
Ví dụ: để lưu tệp minta.tex vào thư mục subvidu, hãy sửa
đổi dòng đầu tiên của mã trước đó như sau:
\Opensolutionfile{minta}[subvidu/minta]
Có các tùy chọn bổ sung với lệnh \Newassociation trong gói
.sty. Ví dụ:
\Newassociation{solution}{megoldas}{megolda}
\renewcommand{\megoldaslabel}[1]{\textbf{Lời giả.} #1.}
\Opensolutionfile{megolda}
AAA
\begin{solution}
BBB
\end{solution}
\Closesolutionfile{megolda}
\input{megolda}
Gói listings.sty phù hợp để hiển thị mã cho các ngôn ngữ
lập trình khác nhau.
Sau đó, gói listsutf8.sty hoạt động giống như các danh
sách khi bạn sử dụng lệnh \lstinputlisting, chỉ chuyển đổi
các ký tự được mã hóa UTF-8 đầu tiên sang Latin-2. Rất tiếc,
listsutf8 không hoạt động với lệnh \lstinline hoặc môi trường
lstlisting. Trong trường hợp này, hãy sử dụng mã sau để thay
thế:
Điều này sẽ chuyển đổi các chữ cái có dấu thành dấu mũ,
giải quyết được vấn đề.
<tùy chọn> Hãy xem lại các tùy chọn cho các lệnh trước
đó. Các mã màu trong các giá trị hoạt động bằng cách tải gói
xcolor.sty.
basicstyle=<style> Phông chữ mã. Ví dụ basicstyle = \small
\ttfamily
columns = <giá trị> Nếu phông chữ trong mã có độ rộng thay
đổi, bạn vẫn có thể cột mã. Sau đó, <giá trị> phải được cố
định (mặc định). Nếu bạn muốn mỗi ký tự xuất hiện theo
chiều rộng tự nhiên của nó, thì giá trị> phải linh hoạt
hoàn toàn. Trong cả hai trường hợp, nó xử lý số lượng và
kích thước không gian một cách linh hoạt.
keepspaces Trong tùy chọn trước, chúng ta thấy rằng số lượng
khoảng trắng trong kết quả cuối cùng chắc chắn không
nhiều như trong nguồn. Nếu điều này mang lại kết quả
không mong muốn, hãy sử dụng tùy chọn này. Điều này
sẽ có chính xác bao nhiêu khoảng trắng mà chúng ta đặt
trong nguồn và sẽ đặt khoảng trắng vào vị trí của các tab.
breaklines ngắt câu mềm mại.
postbreak= \hbox {<dấu>} Ký tên sau khi ngắt các dòng dài.
Ví dụ: với một mũi tên màu đỏ chỉ sang bên phải
postbreak = \hbox{\textcolor{red}{\ rightarrowfill}}
prebreak=\hbox{<đấu>} Giống như trước, chỉ đặt tín hiệu trước
khi ngắt dòng.
breakindent = <độ dài> Sau khi ngắt dòng dài, lượng thụt lề
của dòng tiếp theo. Ví dụ breakindent = 10pt
gobble = <một số> <một số> ký tự đầu tiên của các dòng mã bị
bỏ qua. Các lệnh \lstinline không có hiệu lực.
backgroundcolor = \color{<tên màu>} màu nền. Ví dụ
backgroundcolor = \color{red}
xleftmargin = <độ dài> Khoảng cách giữa cạnh trái của văn
bản và cạnh trái của mã. Ví dụ xleftmargin = 1 cm
xrightmargin = <độ dài> Khoảng cách giữa cạnh phải của văn
bản và cạnh phải của mã.
linewidth = <độ dài> Khoảng cách giữa cạnh trái của văn bản
và cạnh phải của mã.
showspaces Không gian được đánh dấu bằng | |.
showtabs Chỉ ra một tab.
tabsize = <độ dài tab> Kích thước tab dấu cách. Ví dụ tabsize
=2
tab = <ký hiệu> Dấu hiệu tab. Ví dụ tab = \rightarrowfill
number = <loại> Đánh số các dòng mã. Nếu <loại> là không
(mặc định), thì không có đánh số, nếu là bên trái, nó được
đánh số ở bên trái, nếu là bên phải, nó được đánh số ở bên
phải.
numbertyle = <phong cách> Đặt phông chữ cho các số sê-ri. Bộ
đếm là số lượng. Ví dụ numbertyle = \tiny; numberep = <đ
ộ dài> Khoảng cách giữa số thứ tự và mã.
stepnumber = <số nguyên> Ví dụ stepnumber = 2 chỉ mỗi số thứ
tự được hiển thị.
firstnumber = <số nguyên> Ví dụ firstnumber = 100
Trong trường hợp của, số dòng đầu tiên của mã là 100.
Nếu <số nguyên> cuối cùng được thay thế bằng số last, bộ
đếm không được đặt lại ở đầu, vì vậy trong trường hợp
này nó tiếp tục đánh số của mã trước đó.
frame = <giá trị> Vẽ các đường khung. Giá trị có thể là bất
kỳ tập con nào của trblTRBL. t: top, b: bottom, r: right, l:
left (các chữ in hoa có nghĩa tương tự nhau nhưng kẻ một
nét kép). Thậm chí có thể có một shadowbox và none có giá
trị. Ví dụ: nếu bạn muốn vẽ một đường thẳng ở trên cùng
và bên trái, thì frame=tl.
frameround = <giá trị> Kiểu của các góc khung. Giá trị có thể
là bất kỳ tập con bốn phần tử nào của ttttffff. t: góc bo
tròn, f: góc vuông. Trình tự: từ góc trên bên phải theo
chiều quay âm. Ví dụ frameround = tftf
framerule = <độ dài> Độ dày đường khung.
Frameep = <độ dài> Khoảng cách giữa khung và mã.
ruleep = <độ dài> Khoảng cách giữa các đường đôi của
khung.
rulecolor = \color{<tên màu>} Màu của đường khung. Ví dụ
rulecolor = \color {red}
ruleepcolor =\color{<tên màu>} Bạn có thể đặt màu của vùng
giữa các đường viền đôi.
fillcolor = \color{<tên màu>} Màu giữa khung và mã.
literate={<mit>}{{<mire>}}<một số> <mire> LATEX hiển thị mã
trong mã chương trình để nó chiếm <một số> ký tự trong
kết quả. Ví dụ: để chèn <= (≤) hoặc > = (≥) vào mã, hãy
nhập:
literate={<=}{{$\leq$}}1{>=}{{$\geq$}}1
Escapeinside = {<ký tự đầu>} {<ký tự cuối>} chạy lệnh
ngoài. Ví dụ: Escapeinside = {(*} {*)} trong mã (* \
pounds *) sẽ được thay thế bằng £ trong kết quả cuối
cùng, tức là lệnh LATEX giữa các dấu (* và *) sẽ được kết
thúc.
language = <ngôn ngữ lập trình> Đánh dấu các từ khóa và
nhận xét cho một ngôn ngữ lập trình. Bạn có thể tìm thấy
danh sách các ngôn ngữ được xác định trước trong phần
mô tả gói. Ví dụ
language=Delphi
Đây là cách xác định ngôn ngữ của riêng bạn:
\lstdefinelanguage{<tên>}{<tùy chọn>}
(<tùy chọn> xem sau.) Có những ngôn ngữ được xác định
trước có nhiều phương ngữ. Ví dụ, trong C#, hãy tải:
language=[Sharp]C
Bạn có thể tìm thấy danh sách các phương ngữ cho các
ngôn ngữ được xác định trước trong phần mô tả gói. Để
hiện các ngôn ngữ đã tải trước đó, hãy sử dụng điều này:
language={}
Nếu bạn cũng sử dụng các tùy chọn được mô tả sau để
đặt vùng đánh dấu, hãy làm như vậy sau tùy chọn ngôn
ngữ, nếu không ngôn ngữ có thể ghi đè nó.
keywords=[<lớp>]{<danh sách>} Danh sách các từ khóa cần
đánh dấu trong lớp <lớp>, được liệt kê trong <danh sách
>, được phân tách bằng dấu phẩy. <lớp> là một số nguyên
dương. [1] có thể bị bỏ qua. Ví dụ:
keywords={begin,end} hay
keywords=[2]{procedure,function}.
morekeywords = [<lớp>]{<danh sách>} Điều này có thể được sử
dụng để mở rộng danh sách từ khóa cho lớp <lớp>. [1] có
thể bị bỏ qua.
keywordstyle = [<lớp>]<phong cách> Kiểu của các từ khóa
trong lớp <lopw>. [1] có thể bị bỏ qua. Ví dụ
keywordstyle=[2]\bfseries
comment = [s][<phong cách>]{<bắt đầu>}{<kết thúc>} Đánh
dấu nhận xét. Tùy chọn này xóa các kiểu nhận xét đã đặt
trước đó. Nếu bạn sử dụng tùy chọn thêm thông báo thay
vì nhận xét, các cài đặt nhận xét trước đó sẽ được giữ lại.
Ví dụ
comment=[s] [\itshape\color{red}]{/ *} {*/}
hiển thị phần /*...*/ của mã theo kiểu đó, bao gồm dấu
phân cách / * và */.
comment=[n][<phong cách>]<bắt đầu><đến hết> Giống như
trước đây, nhưng ở đây các nhận xét có thể được lồng vào
nhau.
comment=[l][<phong cách>]{<từ>} Đánh dấu các nhận xét một
dòng. Các kiểu bình luận đã đặt trước đó sẽ bị xóa. Nếu
bạn sử dụng tùy chọn thêm thông báo thay vì nhận xét,
các cài đặt nhận xét trước đó sẽ được giữ lại. Ví dụ
comment =[l][\itshape\color{red}]{//}
trong trường hợp //, dòng xuất hiện theo kiểu đó, bao
gồm cả //.
commentstyle =<phong cách> Ví dụ: nếu comment=[l]{//} nhận
xét được xác định, nó sẽ xuất hiện ở dạng nghiêng theo
mặc định. Bạn có thể thay đổi kiểu này sau với tùy chọn
này. Ví dụ:
commentstyle=\itshape\color{green}
delim=[s][<phong cách>] {<đến>}{<đến>} Đánh dấu phần giữa
các dấu phân cách. Các kiểu phân cách đã đặt trước đó
sẽ bị xóa. Nếu bạn sử dụng tùy chọn moredelim thay vì
delim, các cài đặt delim trước đó sẽ được giữ lại. Ví dụ
delim=[s][\color {red}]{"}{"}
hiển thị "..." trong mã theo kiểu đó, bao gồm " cả dấu
phân cách.
delim=[is][<phong cách>] {<khi đó>}{<tiếp tục>}} Nó khác
với cái trước ở chỗ các dấu phân cách không xuất hiện.
alsoletter = {<chuỗi ký tự>} Ví dụ: để xác định \chapter và
\section làm từ khoá, trước tiên bạn phải đặt \ ký
tự thành alsoletter = {\\} với một tùy chọn. Sau đó
morekeywords = {\\chapter, \\section} tùy chọn để xác
định từ khóa.
style = <tên phong cách> Gọi một kiểu được xác định trước.
Để xác định một kiểu, hãy sử dụng lệnh sau: \
lstdefinestyle{<tên phong cách>}{<tùy chọn>}
title = {<mã tiêu đề>} Tên mã không có số sê-ri. Điều này
không có trong danh sách mã.
caption = {<Mã tiêu đề>} Tên mã có số sê-ri, nhãn. Ví dụ: để
sử dụng từ "mã" làm nhãn, hãy sử dụng lệnh sau:
\def\lstlistingname{<mã>}
nolol Các mã được đánh số không được đưa vào danh sách
mã.
numberbychapter = false Các mã không được đánh số bằng số
chương.
label={<nhãn>} Nhãn tham chiếu chéo. Điều này sẽ được sử
dụng thay vì lệnh \label. Không thể sử dụng lệnh này vì
7 Ví dụ 3.41 8
\begin{lstlisting}[language=Delphi,basicstyle=\footnotesize
]
function Trim(s:string):string;
var i:integer;
begin
result:=’’;
for i:=1 to length(s) do if s[i]<>’ ’
then result:=result+s[i];
end;
\end{lstlisting}
: 2
function Trim(s:string):string;
var i :integer;
begin
result:=’ ’ ;
for i :=1 to length(s) do if s[i]<>’ ’
then result:=result+s[i];
end;
7 Ví dụ 3.42 8
\def\lstlistingname{Thủ tục}
\lstset{language=Delphi,basicstyle=\footnotesize,
keywordstyle=\bfseries\color{blue},numbers=left,
frame=tRBl,frameround=tftt}
\begin{lstlisting}[caption={Hàm Trim cắt gọt ký tự trắng},
label={kod-trim}]
function Trim(s:string):string;
var i:integer;
begin
result:=’’;
for i:=1 to length(s) do if s[i]<>’ ’
then result:=result+s[i];
end;
\end{lstlisting}
\ref{kod-trim}. Mã số \dots
: 2
3.1. Mã số . . .
Địa chỉ Internet cũng có thể được coi là nguyên văn theo
một nghĩa nào đó.
\url{<địa chỉ URL>} %trong gói url.sty
Điều này khác với việc sử dụng \verb ở chỗ bạn có thể ngắt
URL ở cuối dòng. Nếu bạn đang tạo một ấn phẩm điện tử, hãy
sử dụng gói hyperref.sty được mô tả sau, gói này cũng có lệnh
\url, thay vì url. Ví dụ
7 Ví dụ 3.43 8: 2
\url{https://ctan.org/} https://ctan.org/
Gói hyperref.sty không ngắt các liên kết trong trường hợp
của một trình biên dịch latex. Sau đó tải gói breakurl.sty ngay
cả sau hyperref.sty.
Phông chữ của URL được lưu trữ trong lệnh \UrlFont. Ví dụ:
nếu bạn muốn URL xuất hiện bằng chữ cổ, hãy nhập:
\def\UrlFont{\rmfamily}
Bạn cũng có thể chỉ định các điểm ngắt có thể có cho URL
bằng lệnh \UrlBreaks. Ví dụ
\def \UrlBreaks{\do\. \do\@ \do\\ \do\/ \do\! \do\_ \do
\| \do\; \do\> \do\] \do\-}
Bạn cũng có thể chuyển đổi tài liệu đã hoàn thành thành
một ấn phẩm điện tử. Để làm điều này, hãy tải gói hyperref.
sty. Sau đó, một cây phác thảo được tạo tự động trong tệp pdf
hoàn chỉnh (dấu trang) và hình thu nhỏ, và liên kết trở thành
liên kết các URL.
Đảm bảo đặt các gói setspace.sty và imakeidx.sty trước
hyperref.sty trong khi tải các gói hình học và babel sau
hyperref.sty.
Lệnh: Một số lệnh hữu ích trong gói hyperref.sty:
\url{<địa chỉ URL>} Điều này cho phép bạn nhập địa chỉ In-
ternet. Lệnh này không thể được tải vào các đối số lệnh.
7 Ví dụ 3.44 8
\url{https://nhdien.wordpress.com}
: 2
https://nhdien.wordpress.com
\nolinkurl {<địa chỉ URL>} Nhập một địa chỉ Internet không
trở thành một liên kết.
7 Ví dụ 3.45 8
\nolinkurl{https://nhdien.wordpress.com}
: 2
https://nhdien.wordpress.com
\href{<địa chỉ URL>}{<văn bản>} <văn bản> xuất hiện trong
pdf, bạn có thể nhấp vào để tải <địa chỉ URL>. Đây là lệnh
không thể được đặt trong đối số của lệnh.
7 Ví dụ 3.46 8
\href{https://vietex.blog.fc2.com/}{Web: LaTeX và ứng
dụng}
: 2
Web: LaTeX và ứng dụng
7 Ví dụ 3.47 8
\href{mailto:nguyenhuudien@hus.edu.vn}{nguyenhuudien@
hus.edu.vn}
: 2
nguyenhuudien@hus.edu.vn
\href {run:<tệp>}{<văn bản>} Thay vào đó, <văn bản> xuất
hiện dưới dạng một liên kết. Nhấp vào đây sẽ tải bên
ngoài <tệp> không thể là tệp exe, bat, zip và các tệp tự
thực thi hoặc nén tương tự khác.
\hyperref[<đánh dấu>]{<văn bản>} Thay vào đó, <văn bản>
xuất hiện dưới dạng một liên kết. Nhấp vào \label {-
label} - chuyển đến nhãn được tạo bằng <đánh dấu>.
\hyperlink [<tag>] {<văn bản1>} Thay vào đó, <văn bản 1>
xuất hiện dưới dạng một liên kết. Bằng cách nhấp vào
đến <tag>
\hypertarget[<tag>]{<văn bản 2>} nhảy đến <văn bàn 2> được
gắn nhãn bởi <tag>.
\phantomsection Nếu bạn ghi vào mục lục bằng lệnh \
addcontentsline, liên kết số trang sẽ không hoạt động.
Để khắc phục điều này, hãy nhập \phantomsection trước
\addcontentsline.
Nó cũng có thể hữu ích khi sử dụng môi trường NoHyper,
trong đó gói hyperref trở nên không hiệu quả.
Tùy chọn. Một số tùy chọn trong gói hyperref.sty:
unicode (tùy chọn mặc định từ năm 2021.) Nếu không có điều
này, chỉ các phông chữ được mã hóa 1 byte mới có thể có
trong cây phác thảo và thông tin pdf. Tùy chọn này cũng
cho phép bạn đặt phông chữ nhiều byte. Kết quả là, ví
dụ, các chữ cái sẽ xuất hiện chính xác và có thể nhập các
ký tự toán học chẳng hạn (xem phần sau).
bookmarks = false Không tạo cây phác thảo. Nó được làm theo
mặc định.
bookmarksopen Theo mặc định, chỉ cấp cao nhất mới được hiển
thị trong cây phác thảo. Với tùy chọn này, tất cả các cấp
sẽ được mở.
bookmarksopenlevel = <số bậc> Cây phác thảo sẽ mở cho đến
khi <số bậc> đã cho.
bookmarknumbered Các tiêu đề trong cây phác thảo phải được
đánh số.
linktocpage Số trang trong danh sách phải là các liên kết.
Theo mặc định, các tiêu đề là các liên kết.
breaklinks Cho phép ngắt dòng cuối dòng. (Tùy chọn cơ bản
cho trình biên dịch pdflatex.)
colorlinks Các liên kết phải được tô màu. Theo mặc định,
chúng xuất hiện với một khung màu.
hidelinks Các liên kết không được tô sáng bằng màu sắc hoặc
khung.
hyperfootnotes = false Điểm đánh dấu chú thích cuối trang
không được là một liên kết.
pdfpagemode = FullScreen Khi bạn mở pdf, chỉ trang được hiển
thị toàn màn hình ở độ phóng đại cao nhất có thể.
pdfstartview = <giá trị> Nếu <giá trị> Fit, hãy sử dụng độ
phóng đại cao nhất có thể trong cửa sổ khi mở pdf. Nếu
FitH, hãy phóng to toàn bộ chiều rộng của cửa sổ khi bạn
mở pdf. Nếu FitV, hãy phóng to toàn bộ chiều cao của cửa
sổ khi bạn mở pdf.
linkcolor = <màu> Màu của liên kết được tạo bởi \ref.
pagecolor = <màu> Màu của liên kết được tạo bởi \pageref.
citecolor = <màu> Màu của liên kết được tạo bởi \cite.
urlcolor = <màu> Màu của liên kết được tạo bởi \url và \href.
runcolor = <màu> Màu của đường dẫn giao thức run:.
allcolors = <màu> Màu của mỗi liên kết.
linkbordercolor = <màu> Màu của khung của liên kết được tạo
bởi \ref.
citebordercolor = <màu> Màu của khung của liên kết được tạo
bởi \cite.
urlbordercolor = <màu> Màu khung của liên kết được tạo bởi
\url và \href.
runbordercolor = <màu> Màu của khung chạy: liên kết giao
thức.
allbordercolors = <màu> Màu của khung của mỗi liên kết.
pdfborder = {0 0 <số>} Độ dày của khung liên kết là <số>
điểm (nếu là 0, không có khung).
Các tùy chọn gói hyperref a
\hypersetup{<tùy chọn 1>, <tùy chọn 2>, ...}
Tại thời điểm này, σ sẽ xuất hiện in đậm trong văn bản và
ở chế độ bình thường trong mục lục, cũng như trong đánh dấu
mã cho phép bạn nhập tiêu đề theo nhiều cách khác nhau
trong mục lục, cây phác thảo và văn bản.
4.1.1 Bảng ví dụ
Vì vậy, một bảng có thể được tạo với môi trường tabular.
Trong tham số này, bạn phải chỉ định có bao nhiêu cột và nội
dung của chúng phải được căn chỉnh như thế nào.
Trong ví dụ, lrr có nghĩa là có 3 cột, cột đầu tiên được căn
bên trái (l ở bên trái) và 2 cột còn lại ở bên phải (r ở bên phải).
Nếu bạn muốn căn giữa một cột, hãy đánh dấu cột đó bằng c
(làm trung tâm). Cái & cá gọi là một ký hiệu cho biết sự phân
tách của hai cột. \\ biểu thị ngắt dòng. Ta cũng có thể kẻ các
đường trong bảng:
7 Ví dụ 4.2 8: 2
\begin{tabular}{|l|rr|} \
hline Hà Nội sáng 9:30
Hà Nội & sáng & 9:30\\ Hải Phòng chiều 14:30
\cline{2-3}
Hải Phòng & chiều & 14:30\\
\hline
\end{tabular}
Nơi bạn muốn vẽ một đường thẳng đứng, hãy đặt nó vào
tham số môi trường dạng bảng |. Bất cứ nơi nào bạn muốn vẽ
một đường ngang, hãy đặt nó trong môi trường bảng
\hline
Nếu bạn không muốn vẽ hoàn toàn một đường ngang, chỉ
cần nói từ cột 2 đến cột 3, hãy thay thế \hline bằng
\cline{2-3}
Ví dụ sau đây cho thấy cách kiểm soát những gì xảy ra giữa
hai cột:
7 Ví dụ 4.4 8: 2
\begin{tabular}{|@{\ 1\,}l@{ = }r@{,}
l@{\,mm}|} 1 pont = 0,35 mm
\hline 1 pica = 4,22 mm
pont & 0 & 35\\
pica & 4 & 22\\ 1 inch = 25,4 mm
inch & 25 & 4\\
\hline
\end{tabular}
Trong tùy chọn @{...} của môi trường bảng, bạn có thể chỉ định
những gì cần đặt trước hoặc sau một ô. @{} Kết quả không có
gì, thậm chí không phải là khoảng trắng:
7 Ví dụ 4.5 8: 2
\begin{tabular}{@{}lrr@{}}
\hline Hà Nội sáng 9:30
Hà Nội & sáng & 9:30\\ Hải Phòng chiều 14:30
Hải Phòng & chiều & 14:30\\
\hline
\end{tabular}
Gói array.sty cũng xác định tùy chọn >{...} để mở rộng các
tùy chọn định dạng cột:
7 Ví dụ 4.7 8: 2
\begin{tabular}{c>{\bfseries}cc}
A & B & C\\
A B C
D & E & F\\ D E F
G & H & I\\
\end{tabular} G H I
<số ô> nghĩa là số ô đã hợp nhất. <định dạng ô> là định dạng
cho một ô đã hợp nhất nhất, được thực hiện chính xác như
trong tham số môi trường dạng bảng. Lệnh này hữu ích ngay
cả khi bạn không muốn hợp nhất, bạn chỉ muốn thay đổi định
dạng của ô đó so với định dạng chung. Trong trường hợp này,
<số ô> có nghĩa là 1.
7 Ví dụ 4.8 8
\begin{tabular}{|l|rr|}
\cline{2-3}
\multicolumn{1}{l|}{}&
\multicolumn{2}{c|}{Năm}\\ \cline{2-3}
\multicolumn{1}{l|}{}&
\multicolumn{1}{c}{2012}&
\multicolumn{1}{c|}{2013}\\ \hline
VCB(đ) &994\,000&1\,231\,500\\
BIVD(đ)&165\,000&194\,950\\ \hline
\end{tabular}
: 2
Năm
2012 2013
VCB(đ) 994 000 1 231 500
BIVD(đ) 165 000 194 950
7 Ví dụ 4.9 8
\setlength{\extrarowheight}{2pt}
\begin{tabular}{|l|rr|}
\cline{2-3}
\multicolumn{1}{l|}{}&
\multicolumn{2}{c|}{Năm}\\ \cline{2-3}
\multicolumn{1}{l|}{}&
\multicolumn{1}{c}{2012}&
\multicolumn{1}{c|}{2013}\\ \hline
VCB(đ) &994\,000&1\,231\,500\\
BIVD(đ)&165\,000&194\,950\\ \hline
\end{tabular}
: 2
Năm
2012 2013
Bạn có thể hợp nhất các ô theo chiều dọc bằng lệnh sau
7 Ví dụ 4.10 8: 2
\begin{tabular}{|l|c|}
\hline 1
Gộp 2 hàng
\multirow{2}*{Gộp 2 hàng} & 1\\ 2
& 2\\ \hline
\multirow{3}{3cm}{ Gộp 3 hàng c Gộp 3 hàng có 3
ó chiều rộng 3\,cm} & 3\\ chiều rộng 4
\cline{2-2}
3 cm
& 4\\ \cline{2-2} 5
& 5\\ \hline
\end{tabular}
Ví dụ sau đây cho thấy cách điều chỉnh độ rộng của mỗi cột.
7 Ví dụ 4.11 8
\begin{tabular}{|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}
\hline
Độ rộng cột 1 và căn phải \rightskip\fill &
Độ rộng cột 2 và căn trái \leftskip\fill &
Độ rộng cột 3 và căn giữa \leftskip\fill\rightskip\fill &
Độ rộng cột 4 và căn \\
\hline
\end{tabular}
: 2
Độ rộng Độ rộng Độ rộng Độ rộng
cột 1 và cột 2 và cột 3 và cột 4 và
căn phải căn trái căn giữa căn
Đoạn mã sau có tác dụng tương tự như đoạn trước khi tải
gói array.sty
7 Ví dụ 4.12 8
\begin{tabular}{|>{\raggedright\arraybackslash}p{2cm}
|>{\raggedleft\arraybackslash}p{2cm}
|>{\centering\arraybackslash}p{2cm}
|p{2cm}|}
\hline
Độ rộng cột 1 và căn phải&
Độ rộng cột 2 và căn trái &
7 Ví dụ 4.13 8
\begin{tabular}{|>{\raggedright\arraybackslash}m{2cm}
|>{\raggedleft\arraybackslash}m{2cm}
|>{\centering\arraybackslash}m{2cm}
|m{2cm}|}
\hline
cột 1 căn dọc, căn dọc&
cột 2 căn dọc,&
cột 3 &
Độ rộng cột 4 và dọc \\
\hline
\end{tabular}
: 2
cột 1 căn Độ rộng
cột 2 căn
dọc, căn cột 3 cột 4 và
dọc,
dọc dọc
Ta có thể xác định trước các loại cột với theo định nghĩa
\newcolumntype{<ký tự>}{<định nghĩa>} %trong gói array.sty
\newcolumntype{L}{>{\raggedright\arraybackslash}m{16mm}}
\newcolumntype{R}{>{\raggedleft\arraybackslash}m{16mm}}
\newcolumntype{C}{>{\centering\arraybackslash}m{16mm}}
\newcolumntype{M}{m{22mm}}
7 Ví dụ 4.14 8
\begin{tabular}{|L|R|C|M|}
\hline
cột 1 căn dọc, căn dọc& cột 2 căn dọc,&
cột 3 & Độ rộng cột 4 và dọc \\
\hline
\end{tabular}
: 2
cột 1
cột 2 Độ rộng cột
căn dọc, cột 3
căn dọc, 4 và dọc
căn dọc
7 Ví dụ 4.15 8
\begin{tabular*}{6cm}{|l@{ -- }l@{\extracolsep{\fill}}r|}
\hline
Hà Nội & sáng & 9:30\\
Hải Phòng & chiều & 14:30\\
\hline
\end{tabular*}
: 2
Hà Nội – sáng 9:30
Hải Phòng – chiều 14:30
7 Ví dụ 4.16 8: 2
\setlength{\arrayrulewidth}{1pt}
\begin{tabular}{|c|c|}\hline A B
A & B\\ \hline C D
C & D\\ \hline
\end{tabular}
Với gói array, bạn cũng có thể thay đổi độ dày của một đường
thẳng đứng:
7 Ví dụ 4.17 8: 2
\begin{tabular}{|c!{\vrule width 2pt}
c|}
A B
A & B\\ C D
C & D
\end{tabular}
Bạn có thể sử dụng gói colortbl.sty để chỉ định màu nền của
ô:
7 Ví dụ 4.20 8: 2
\begin{tabular}{|c |c |c|} \hline
một & hai & ba\\ \hline một hai ba
bốn &\cellcolor{red}năm& sáu\\ \hline bốn năm sáu
\end{tabular}
Bạn có thể hiển thị một bảng với các hàng màu xen kẽ bằng
cách tải gói xcolor.sty với tùy chọn table.
7 Ví dụ 4.21 8: 2
\rowcolors{1}{green!30}{pink!50}
\begin{tabular}{ccc}
một hai ba
một & hai & ba\\ bốn năm sáu
bốn & năm& sáu\\
bẩy & tám & chín\\ bẩy tám chín
\end{tabular}
Đối số đầu tiên cho \rowcolors chỉ định số hàng bắt đầu tô màu
và hai đối số còn lại chỉ định màu sắc.
Nếu bảng dài đến mức không vừa trên một trang, hãy sử
dụng gói longtable.sty.
\begin{longtable}[<vị trí>]{<định dạng cột>}% gói longtable
.sty
\endfirsthead
\endhead
\endfoot
\endlastfoot
<vị trí> có thể là r, l, c (c mặc định). Các thao tác này đặt bảng
lần lượt sang bên phải, bên trái và chính giữa. <định dạng cột>
chứa các hướng dẫn định dạng cột thông thường.
7 Ví dụ 4.22 8
\begin{longtable}{|l|l|}
\caption{Bảng tự ngắt theo trang}% tiêu đề bảng
Các bảng thảo luận ở trên có cấu trúc truyền thống. Tuy
nhiên, kiểu chữ của các bảng cấp nhà xuất bản có một chút
khác biệt. Sự khác biệt chính:
- Bạn cần một dòng dày hơn ở đầu và cuối bảng so với những
dòng ở giữa.
Nếu không có tùy chọn (chính xác hơn là với tùy chọn cơ
bản), căn chỉnh được căn giữa:
7 Ví dụ 4.25 8: 2
chữ trước
\begin{tabular}{|cc|}\hline A B
A&B\\ A&B\\ A&B\\ \hline chữ trước A B chữ sau
\end{tabular}
chữ sau A B
Nếu <tùy chọn> là t (viết tắt top) thì phần đầu của bảng được
thêm vào đường cơ sở
7 Ví dụ 4.26 8: 2
chữ trước chữ trước chữ sau
\begin{tabular}[t]{|cc|}\ A B
hline
A&B\\ A&B\\ A&B\\ \hline A B
\end{tabular}
A B
chữ sau
Nếu <tùy chọn> là b (viết tắt bottom) thì phần cuối của bảng
được thêm vào đường cơ sở
7 Ví dụ 4.27 8: 2
chữ trước
\begin{tabular}[b]{|cc|}\ A B
hline A B
A&B\\ A&B\\ A&B\\ \hline
\end{tabular} A B
chữ trước chữ sau
chữ sau
Đối với hai kết quả khớp sau, có thể gây nhầm lẫn rằng đường
cơ sở của văn bản không trùng với đường cơ sở của hàng cuối
cùng hoặc đầu tiên của bảng, tương ứng. Điều này có thể được
giúp đỡ bởi
\firsthline %trong gói array.sty
\lasthline %trong gói array.sty
7 Ví dụ 4.28 8: 2
\begin{tabular}[t]{|cc|}\
firsthline A B
A&B\\ A&B\\ A&B\\ \hline A B
\end{tabular}
chữ A B chữ A B
\begin{tabular}[b]{|cc|}\
A B
hline
A&B\\ A&B\\ A&B\\ \ A B
lasthline
\end{tabular}
Khi bạn đến điểm trong tệp nguồn mà bạn muốn hiển thị
hình ảnh, hãy sử dụng lệnh sau:
<tệp ảnh> - Ta không cần chỉ định phần mở rộng khi chỉ
định tệp hình ảnh. Đó là, ví dụ: nếu ta cần chèn hình ảnh
flower.jpg, thì
7 Ví dụ 4.29 8: 2
\centering
\includegraphics[width=2cm]
{flower}
Bạn không cần chỉ định phần mở rộng vì bạn sẽ tìm kiếm
phần mở rộng pdf, jpg hoặc png nếu bạn đang sử dụng trình
biên dịch pdflatex và một phần mở rộng eps nếu bạn đang sử
dụng trình biên dịch latex. Vì vậy, nếu bạn đã chỉ định hình
ảnh ở cả hai định dạng, bạn có thể sử dụng bất kỳ trình biên
dịch nào mà không cần thay đổi nguồn. Điều quan trọng là
trong trường hợp này, tệp flower.jpg phải được đặt trong thư
mục hiện tại. Nếu hình ảnh nằm trong thư mục con của thư
mục hiện tại, chẳng hạn như thư mục con có tên hinh, bạn có
thể sử dụng mã sau:
\includegraphics{hinh/flower}
Đó là một sai lầm phổ biến để cung cấp cho con đường đầy
đủ. Ví dụ
\includegraphics{C:/sample/hinh/flower.jpg}%Không nên dùng
Đây là một giải pháp tồi, vì khi đó nguồn sẽ chỉ bật theo đường
dẫn này, tức là nó sẽ không di động được.
Cũng có thể không chỉ định tên thư mục con trong mỗi lệnh
\includegraphics. Sau đó, sử dụng
\graphicspath{{<thư mục con>/}} %trong gói graphicx.sty
chỉ huy. Ví dụ: nếu thư mục con được đặt tên là hinh, thì
\graphicspath{{hinh/}}
Trong trường hợp này, tệp flower.jpg trong thư mục con của
biểu đồ cũng có thể được hiển thị với mã sau:
\includegraphics{flower}
Điều này làm cho nguồn rất linh hoạt, vì bạn chỉ cần sửa
thư mục con ở một nơi khi bạn đổi tên nó. Nếu bạn đã đặt hình
ảnh trong nhiều thư mục con, chẳng hạn như geometry ngoài
thư mục trước đó, hãy nhập:
\graphicspath{{hinh/}{geometry/}}
Bạn có thể nhập các thư mục con bổ sung với các thay đổi
thích hợp. Không đặt các tệp có cùng tên trong các thư mục
con khác nhau.
Thật không may, giải pháp này có một mối nguy hiểm. Điều
này là do trình biên dịch đầu tiên tìm kiếm hình ảnh trong thư
mục hiện tại, sau đó trong các gói đã cài đặt và chỉ cuối cùng
trong (các) thư mục con được chỉ định trong \graphicspath. Ví
dụ: một gói được gọi là notes chứa một tệp hình ảnh có tên là
info.pdf. Vì vậy, nếu bạn có tệp hình ảnh info.pdf của riêng
mình trong một thư mục con được gọi là hinh, thì
\graphicspath{{hinh/}}
\includegraphics{info}
mã sẽ tải hình ảnh trong gói notes.sty, không phải người dùng
của bạn. Điều này chỉ có thể được bảo vệ theo một cách bằng
cách đặt cho mỗi hình ảnh một tiền tố duy nhất mà chắc chắn
không thể nằm trong số các gói đã cài đặt. Nó cũng có thể
là một chuỗi số hoặc tên, chẳng hạn như tomacs-info.pdf. Về
phần mình, ta không thích giải pháp này, vì vậy ta không sử
dụng lệnh \graphicspath.
Lệnh \includegraphics có các <tùy chọn> sau, trong số các
tùy chọn khác:
width = <chiều rộng> Chiều rộng của hình ảnh (ví dụ: width
= 5cm).
height = <chiều cao> Chiều cao của hình ảnh (ví dụ: height =
5cm). Bạn cũng có thể làm sai lệch hình ảnh bằng cách
chỉ định chiều rộng và chiều cao cùng nhau.
scale = <số tỷ lệ> Tỷ lệ phóng đại/thu nhỏ (ví dụ: scale = 2).
trim = <trái><dưới><phải><trên> Xác định khung trong hình
ảnh. Sau đó, hình ảnh được định vị trên hình ảnh còn
lại sau khi khung được cắt, nhưng toàn bộ hình ảnh sẽ
được hiển thị, tức là không xảy ra hiện tượng cắt xén thực
tế nào. Ví dụ: nếu bạn nhập trim = 10mm 11mm 12mm 13mm,
khung sẽ là 10mm ở bên trái, 11mm ở dưới cùng, 12mm
ở bên phải và 13mm ở trên cùng.
clip Nếu cái này được tải bên cạnh phần cắt, một phần cắt
thực sự sẽ được thực hiện.
page = <trang> Đối với tệp pdf nhiều trang, hãy chọn trang (ví
dụ: trang = 5).
angle = <độ đo góc> Góc mà hình ảnh được quay theo độ. Giá
trị dương ngược chiều kim đồng hồ.
origin = <vị trí tâm quay> Tâm quay. Các giá trị của 〈origó〉
có thể là tl, t, tr, l, c, r, bl, b, br (mặc định: bl). Chúng được
giải thích trong hình sau:
7 Ví dụ 4.30 8: 2
\centering
\includegraphics[width=2cm,
angle=-90,origin=c]{
flower}
7 Ví dụ 4.31 8: 2
\centering
\includegraphics[trim=10mm
10mm 10mm 10mm,clip,
scale=0.5]{flower}
Hiển thị trang 5 của tệp tabular.pdf nhiều trang dưới dạng
hình ảnh cao 10 cm:
\includegraphics[height=10cm,page=5]{tabular}
Bạn có thể chèn hình nền trên một trang nhất định với gói
eso-pic.sty được tải sau graphicx.sty bằng lệnh sau:
\AddToShipoutPictureBG*{<tệp ảnh>} %trong gói eso-pic.sty
Ví dụ
\AddToShipoutPictureBG*{%
\AtPageLowerLeft{%
\setlength{\unitlength}{1mm}%
\put(10,20){%
\includegraphics[width=15cm]{hatter}%
}%
}%
}
đặt một hình ảnh rộng 15cm gọi là biasach làm nền của
trang đó sao cho góc dưới bên trái của hình ảnh ở điểm (10,20)
so với góc dưới bên trái của trang làm điểm gốc, trong đó một
đơn vị là 1 mm.
Trên các hệ thống được cài đặt sau tháng 10 năm 2020, bạn
cũng có thể nhập lệnh độ dài hoặc độ dài trực tiếp trong lệnh
\put, vì vậy mã sau sẽ tương đương với mã trước đó:
\AddToShipoutPictureBG*{%
\AtPageLowerLeft{%
\put(10mm,20mm){%
\includegraphics[width=15cm]{hatter}%
}%
}%
}
Lệnh \AtPageLowerLeft đặt điểm gốc ở góc dưới bên trái của
trang. Thay vào đó, nguồn gốc có thể được định vị lại bằng các
lệnh sau:
\AtPageUpperLeft gốc ở góc trên bên trái của trang,
\AtTextUpperLeft gốc ở góc trên bên trái của gương văn bản,
\AtTextLowerLeft gốc ở góc dưới bên trái của gương văn bản,
\AtPageCenter nguồn gốc ở giữa trang.
Nếu không có các mã * trước đó, hình ảnh được hiển thị
dưới dạng nền trên mỗi trang. Ví dụ, bạn có thể tạo một hình
mờ. Tác dụng của việc này là
\ClearShipoutPictureBG %trong gói eso-pic.sty
có thể được hủy bỏ bằng lệnh. Tất nhiên, thay vì một hình ảnh,
bất kỳ văn bản nào cũng có thể được chèn tương tự làm nền.
Nếu bạn muốn đưa thứ gì đó lên nền trước (chẳng hạn như
con dấu), hãy thay thế các chữ cái BG (nền) bằng FG (nền
trước) trong các lệnh trước đó.
Nếu bạn muốn chèn các trang từ tệp pdf bên ngoài, hãy sử
dụng
\includepdf[<tùy chọn trang>]{tệp pdf} %trong gói
pdfpages.sty
Ví dụ,
\includepdf[pages={3,8-11,15}]{ebook.pdf}
chèn các trang 3, 8, 9, 10, 11, 15 trong ebook.pdf. Sau
\includeepdf [pages = -]{ebook.pdf}
pdfannotextractor --install
pdfannotextractor ebook.pdf
Thao tác này sẽ tạo tệp ebook.pax chứa dữ liệu cho các liên
kết doc.pdf. Sau đó tải các gói hyperref (xem phần 18.1) và pax
vào tệp nguồn. Sau đó, bằng cách tải tệp ebook.pdf như trước
và sau đó chuyển đổi tệp nguồn sang pdf bằng trình biên dịch
pdflatex, kết quả thu được sẽ chứa các liên kết ebook.pdf chính
xác.
7 Ví dụ 4.32 8 : 2
\begin{figure}
\centering
\includegraphics{flower}
\end{figure}
Vì chúng ta không chỉ định tùy chọn ở đây nên giá trị mặc định
là tbp. Điều này có nghĩa là trong trường hợp này, trước tiên
bạn sẽ cố gắng đặt hình ảnh ở đầu trang, nếu không thể đặt
hình ảnh ở đó, thì ở cuối trang, nếu không ở đó, trên một trang
tính riêng biệt.
Trong trường hợp này, nó sẽ
\begin{figure}[ht] cố gắng đăt hình tại đây trước,
\centering
nhưng nếu nó không thể được, nó
\includegraphics{flower}
sẽ đặt hình ở đầu trang sau.
\end{figure}
Cố gắng giữ hình ảnh đúng vị trí
\begin{figure}[ht!] với một số hạn chế được dỡ bỏ,
\centering
nhưng nếu không thể đến được
\includegraphics{flower}
đó, hãy đặt hình ảnh ở đầu trang.
\end{figure}
Trong hầu hết các trường hợp, ta sử dụng tùy chọn này trong
tài liệu của riêng mình. Trong những trường hợp như vậy, có
vẻ như bạn nên thay đổi tùy chọn tbp cơ bản thành ht! giá trị.
Ví dụ: trong môi trường figure, bạn có thể thực hiện điều này:
\makeatletter \def\fps@figure{ht!} \makeatother
hoặc
\floatplacement{figure}{ht!} %trong gói float.sty
Có thể xảy ra trường hợp một đối tượng di động được đặt ở đầu
trang trong các hàng của chủ đề trước đó, điều này thật đáng
tiếc. Trong trường hợp này, hãy sử dụng
\suppressfloats[<tùy chọn>]
Đối tượng di động tiếp theo không thể xuất hiện ở vị trí của
trang theo <tùy chọn>, có thể là t hoặc b. Nếu tùy chọn này
không được chỉ định, không có đối tượng di động nào có thể
xuất hiện ở bất kỳ đâu trên trang. Tác dụng của lệnh này được
giới hạn trong một trang và chỉ áp dụng cho đối tượng di động
tiếp theo trong mã nguồn.
Nếu bạn muốn các đối tượng di động bắt đầu từ trước đến
nay được hoàn thành cho đến một thời điểm nhất định, hãy sử
dụng
\FloatBarrier %trong gói lệnh placeins.sty
Chúng ta sẽ mô tả việc phân chia các tác phẩm dài hơn thành
các phần sau. Sau đó, sẽ là may mắn nếu tất cả các đối tượng
di động trong các giai đoạn được hoàn thành. Điều này được
thực hiện bằng tùy chọn phần trong gói placeins.sty. Đối với
các chương, đây không phải là vấn đề, vì mỗi chương đóng lại
bằng lệnh \clearpage, lệnh này sẽ hiển thị các bước đang chờ
xử lý.
Giá trị mặc định của tùy chọn nhãn đưa vàodanh sáchgiống như
<nhãn chú thích>.
7 Ví dụ 4.33 8: 2
\begin{figure}[ht!]
\centering
\includegraphics[scale=0.2]{
flower}
\caption{Bông hoa}\label{fig:01} Hình 4.3.1: Bông hoa
\end{figure} Hình 4.3.1 hoa đẹp.
Hình \ref{fig:01} hoa đẹp
Kết quả là, hình ảnh được hiển thị ở trung tâm và được gắn
nhãn. Nhãn sẽ cho biết "hình" hoặc "bảng" tùy theo việc chúng
ta đặt lệnh \caption vào môi trường hình hoặc bảng. Số sê-ri
là tự động. Địa chỉ được chỉ định sẽ được thêm vào danh sách
tương ứng.
Nếu bạn không muốn đánh số, chỉ cần một nhãn chú thích,
hãy sử dụng lệnh sau:
\caption*{<nhãn chú thích>} %trong gói lệnh caption.sty
Nếu bạn không muốn cung cấp <nhãn chú thích>, chỉ cần
đánh số, hãy làm như sau trong khi sử dụng gói caption.sty:
7 Ví dụ 4.34 8: 2
\begin{figure}[ht!]
\centering
\includegraphics[scale=0.2]{
flower}
\caption{}\label{fig:02} Hình 4.3.2
\end{figure} Hình 4.3.2 hoa đẹp
Hình \ref{fig:02} hoa đẹp.
Nếu bạn muốn một <nhãn khác> khác được đưa vào danh
sách ngoài nhãn, hãy chỉ định <nhãn khác> sẽ được đưa vào
danh sách như một tùy chọn cho lệnh \caption. Ví dụ
\caption[<nhãn khác>]{<nhãn chú thích>}
Không thể đặt chú thích cuối trang trong lệnh \caption như
bình thường. Đó là, ví dụ, mã sau đây không biên dịch được:
\begin{figure}[ht!]
\centering
\includegraphics[scale=0.2]{flower}
\caption{Bông hoa\footnote{Dưới chân trang}}\label{fig:03}
\end{figure}
Có thể có hai giải pháp tùy thuộc vào việc bạn có muốn một
danh sách hình hoặc bảng hay không:
7 Ví dụ 4.35 8: 2
\begin{figure}[ht!]
\centering
\includegraphics[scale=0.2]{
flower}
\caption{Bông hoa Hình 4.3.3: Bông hoa1
\footnotemark}\label{fig:03}
\end{figure} Dưới chân trang
\footnotetext{Dưới chân trang}
Hoặc
\begin{figure}[ht!]
\centering
\includegraphics[scale=0.2]{flower}
\caption[]{Bông hoa \footnotemark}\label{fig:03}
\end{figure}
\footnotetext{Dưới chân trang}
ta cũng có thể xác định môi trường nổi của riêng của mình. Ví
dụ, chúng ta muốn tạo đồ thị. Tên môi trường phải là graph,
nhãn phải là "graph" và tiêu đề danh sách phải là "Danh sách
các đồ thị". Sau đó, viết những điều sau trong phần mở đầu:
\DeclareCaptionType{graph}[graph][<Danh sách các đồ thị>] %
trong caption.sty
Sau đó, bạn có thể sử dụng môi trường graph chính xác như
môi trường table hoặc figure.
Nếu bạn không muốn di động một đối tượng, nhưng muốn
“giữ” vị trí của nó, hãy sử dụng tùy chọn H cho môi trường di
động, có sẵn bằng cách tải gói float.sty. Ví dụ
7 Ví dụ 4.36 8: 2
\begin{figure}[H]
\centering
\includegraphics[scale=0.2]{
flower}
\caption{Bông hoa}\label{fig:04} Hình 4.3.4: Bông hoa
\end{figure}
Trong trường hợp này, đối tượng chắc chắn sẽ xuất hiện ở
nơi nó phải ở theo mã. Nhưng theo cách này, độ bão hòa của
các trang sẽ không nhất thiết phải đủ, vì vậy giải pháp này đòi
hỏi nhiều thử nghiệm, tức là nó không thuận tiện. Câu hỏi đặt
ra là tại sao, nếu chúng ta không muốn di động một thứ gì đó,
chúng ta lại đặt nó trong một môi trường di động. Câu trả lời
là lệnh \caption từ môi trường di động biết cần nhập nhãn và
số sê-ri nào. Một cách khác để giải quyết vấn đề này là
\captionof{<môi trường đi động>}[<danh mục>]{<chú giải>} %
trong caption.sty
7 Ví dụ 4.37 8: 2
\begin{center}
\centering
\includegraphics[scale=0.2]{flower}
\captionof{figure}{Bó hoa}\label{fig:
05}
\end{center} Hình 4.3.5: Bó hoa
7 Ví dụ 4.38 8: 2
\begin{center}
\centering
\includegraphics[scale=0.2]{flower}
\figcaption{Bó hoa}\label{fig:06}
\end{center}
Hình 4.3.6: Bó hoa
Bao bọc các đối tượng xung quanh bằng văn bản, điều này
có thể được thực hiện với môi trường window hoặc figwindow của
gói picinpar.sty cho hình ảnh. Điều này được tạo thành từ các
hình, nhưng cũng có thể được áp dụng cho các bảng hoặc bất
kỳ đối tượng di động nào của riêng bạn bằng lệnh \captionof
trong gói caption.sty.
\begin{window}[<số nguyên>,<vị trí>,{<tệp hình hoặc bảng>},
{}]
...Nội dung ....văn bản...
\end{window}
2 Đối số <vị trí> là chữ cái l đặt bên trái, r đặt bên phải và
c đặt trung tâm.
2 <tệp hình> là đoạn mã của TikZ hoặc các tệp bằng lệnh
\includegraphics[scale=0.7]{<tệp hình>} hoặc một bảng.
7 Ví dụ 4.39 8
\begin{window}[0,l,{\includegraphics[scale=0.3]{flower}},{}
]
\vnlipsum[1-2]
\end{window}
: 2
1. Sai lầm lớn nhất đời người là dùng sức khỏe
để đánh đổi lấy những vật ngoài thân. Bi ai
lớn nhất đời người là dùng sinh mệnh để đổi
lấy phiền não và lãng phí lớn nhất đời người
là dùng tính mạng để giải quyết rắc rối do bản
thân mình tạo ra!
2. Dù rất chua chát nhưng sự thật là, nhà ở có sửa to, rộng
hơn thế nào đi nữa cũng chỉ là nơi ở tạm thời. Cái quách
sành mới là nhà ở vĩnh hằng của tất cả chúng ta. Thế nên,
nhà rộng chẳng bằng tâm rộng, tấm lòng rộng mở, bề ngoài
an yên không bằng cõi lòng an yên.
7 Ví dụ 4.40 8
\begin{window}[2,r,{\includegraphics[scale=0.3]{flower}},{}
]
\vnlipsum[1-2]
\end{window}
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
148 Chương 4. Bảng và hình với môi trường động
1. Sai lầm lớn nhất đời người là dùng sức khỏe để đánh đổi
lấy những vật ngoài thân. Bi ai lớn nhất đời người là dùng
sinh mệnh để đổi lấy phiền não và lãng phí lớn
nhất đời người là dùng tính mạng để giải quyết
rắc rối do bản thân mình tạo ra!
2. Dù rất chua chát nhưng sự thật là, nhà ở có
sửa to, rộng hơn thế nào đi nữa cũng chỉ là nơi
ở tạm thời. Cái quách sành mới là nhà ở vĩnh hằng của tất
cả chúng ta. Thế nên, nhà rộng chẳng bằng tâm rộng, tấm
lòng rộng mở, bề ngoài an yên không bằng cõi lòng an yên.
Môi trường có đánh số
\begin{figwindow}[<số nguyên>,<vị trí>,{<tệp hình>},{<chú
giải>}]
...Nội dung ....văn bản...
\end{figwindow}
\begin{tabwindow}[<số nguyên>,<vị trí>,{<tệp hình>},{<chú
giải>}]
...Nội dung ....văn bản...
\end{tabwindow}
Hoath động môi trường này giống như môi trường window.
7 Ví dụ 4.41 8
\begin{figwindow}[2,r,{\includegraphics[scale=0.3]{flower}}
,{Bông hoa}]
\vnlipsum[1-2]
\end{figwindow}
: 2
1. Sai lầm lớn nhất đời người là dùng sức khỏe để đánh đổi
lấy những vật ngoài thân. Bi ai lớn nhất đời người là dùng sinh
mệnh để đổi lấy phiền não và lãng phí lớn nhất đời
người là dùng tính mạng để giải quyết rắc rối do
bản thân mình tạo ra!
2. Dù rất chua chát nhưng sự thật là, nhà ở
có sửa to, rộng hơn thế nào đi nữa cũng chỉ là
Hình 4.3.7:
nơi ở tạm thời. Cái quách sành mới là nhà ở vĩnh
Bông hoa
hằng của tất cả chúng ta. Thế nên, nhà rộng chẳng
7 Ví dụ 4.42 8
\begin{tabwindow}[1,c,{%
\begin{tabular}[t]{|r|l|r@{:}l|}%
\hline
1&HSV&12&0\\
\hline
2&MSV&11&1\\
\hline
3&VfB&10&2\\
\hline
\end{tabular}},{Tài liệu}]
\vnlipsum[1-2]
\end{tabwindow}
: 2
1. Sai lầm lớn nhất đời người là dùng sức khỏe để đánh
đổi lấy những vật 1 HSV 12:0 ngoài thân. Bi ai lớn
nhất đời người là dùng sinh mệnh để
đổi lấy phiền não và 2 MSV 11:1 lãng phí lớn nhất đời
người là dùng tính 3 VfB 10:2 mạng để giải quyết
rắc rối do bản thân mình tạo ra!
2. Dù rất chua chát Bảng 4.3.1: Tài nhưng sự thật là,
nhà ở có sửa to, rộng liệu hơn thế nào đi nữa
cũng chỉ là nơi ở tạm thời. Cái quách sành mới là nhà ở vĩnh
hằng của tất cả chúng ta. Thế nên, nhà rộng chẳng bằng tâm
rộng, tấm lòng rộng mở, bề ngoài an yên không bằng cõi lòng
an yên.
\begin{floatingfigure}[r]{4cm}
\centering
\includegraphics[scale=0.2]{flower}
\figcaption{Bông hoa}\label{fig:07}
\end{floatingfigure}
Tùy chọn:
r Di chuyển đối tượng sang phải.
Hộp là một phần của tài liệu mà nội dung của nó không thể
bị chia nhỏ ở cuối dòng hoặc ở cuối trang, nghĩa là, không theo
chiều dọc cũng như chiều ngang. Đó là các đối tượng di động,
nhưng một hộp cũng là một chữ cái hoặc một dòng chẳng hạn.
Có ba loại hộp:
- Hộp một hàng: hộp một hàng tải từ trái sang phải không
quá một dòng.
- Hộp đoạn văn: tối đa một hộp nhiều dòng.
- Hộp dòng: dòng có thể điều chỉnh kích thước.
152 Chương 5. Hộp và khung hộp
Chúng ta giới thiệu các từ sau cho các kích thước của hộp:
Tổng chiều cao và chiều sâu được gọi là tổng chiều cao.
Nếu <vị trí văn bản> là c, nó căn giữa văn bản trong hộp
(mặc định), nếu l, thì sang trái, nếu r, sang phải và đối với
s, kéo dài/nén đến hết chiều rộng của hộp. Nếu bạn không chỉ
định chiều rộng và vị trí, chiều rộng của hộp sẽ giống với chiều
rộng của văn bản:
7 Ví dụ 5.1 8: 2
\makebox{Hà Nội} Hà Nội
Do đó, từ ’Hà Nội’ thu được là không thể tách rời, vì LATEX
coi nó như một chiếc hộp. Một vi dụ khác
7 Ví dụ 5.2 8: 2
\makebox[5cm][s]{Hà Nội}\\ Hà Nội
\makebox[5cm][s]{H à N ộ i} H à N ộ i
2. Bạn cũng có thể đóng khung một hộp một dòng bằng lệnh
sau:
Khoảng cách giữa khung và văn bản, theo mặc định là 3pt, có
thể được điều chỉnh bằng lệnh sau ví dụ: đối với 2pt.
\setlength{\fboxsep}{2pt}
Hộp một tô màu cũng có thể được sản xuất. Chúng được thể
hiện trong gói lệnh xcolor.sty:
7 Ví dụ 5.4 8: 2
\colorbox{pink}{Hà Nội} Hà Nội Hà Nội
\colorbox[RGB]{128,0,128}{Hà Nội}
\fcolorbox{red}{yellow}{Hà Nội} Hà Nội
3. Lệnh sau tạo một hộp một dòng cao hơn/thấp hơn đường
cơ sở:
\raisebox{<khoảng nâng>}{<văn bản>}
7 Ví dụ 5.5 8: 2
Con cò\raisebox{4pt}{bay}lả Con còbaylả bayla.
\raisebox{-4pt}{bay}la.
cũng là các lệnh chiều dài, là chiều rộng, chiều cao, chiều sâu
và chiều cao tổng thể của hộp được tạo bởi <văn bản>. Ví dụ
7 Ví dụ 5.6 8: 2
Con cò\raisebox{0.5\height}{bay}lả
Con còbaylả la.
\raisebox{-\height}{bay}la. bay
Bạn có thể đặt nhiều dòng hoặc nhiều đoạn văn bản trong
các hộp khối văn bằng lệnh hoặc ngữ cảnh sau:
\parbox[<vị trí>][<chiều cao>][<vị trí văn bản>]{<độ rộng>}{<văn
bản>}
hoặc
\begin {minipage}[<vị trí>][<chiều cao>][<vị trí văn bản>]{<độ rộ
ng>}
<văn bản>
\end{minipage}
<vị trí> kiểm soát cách định vị hộp so với đường cơ sở của môi
trường. Theo mặc định, tâm của hộp là điểm căn chỉnh,
đối với t là đường cơ sở của hàng trên cùng của hộp và đối
với b là đường cơ sở của hàng dưới cùng.
[<chiều cao>] là tổng chiều cao của hộp.
[<vị trí văn bản>] có thể được sử dụng nếu chiều cao cũng
được chỉ định. Chỉ định cách văn bản được định vị theo
chiều dọc trong hộp. Các giá trị của nó là t, b, c, s, đặt văn
bản theo chiều dọc ở giữa và ở trên cùng và dưới cùng của
hộp, và trải rộng nó trên toàn bộ chiều cao của hộp. Tùy
chọn s chỉ hoạt động nếu bạn đặt các khoảng trống dọc
linh hoạt trong văn bản (ví dụ: medskip).
<độ rộng> là chiều rộng của hộp.
<văn bản> nội dung của hộp.
7 Ví dụ 5.7 8: 2
\textbf{SÓNG} SÓNG Ôi con sóng ngày xưa
\begin{minipage}[t][2cm][s] Và ngày sau vẫn thế
{4cm}
Ôi con sóng ngày xưa\\ Nỗi khát vọng tình yêu
Và ngày sau vẫn thế Bồi hồi trong ngực trẻ
\par\medskip
Nỗi khát vọng tình yêu
Bồi hồi trong ngực trẻ
\end{minipage}
Hộp đoạn văn cũng có thể được đóng khung mà không cần lệnh
khác, vì hộp đoạn văn có thể được đặt trong hộp có khung một
dòng, vì nó đã được coi là một đơn vị, một hộp:
7 Ví dụ 5.8 8: 2
\textbf{SÓNG} SÓNG
\fbox{\begin{minipage}[t][2
Ở ngoài kia đại dương
cm][s]{4.5cm}
Trăm nghìn con sóng
Ở ngoài kia đại dương
Trăm nghìn con sóng đó
đó
\par\medskip Con nào chẳng tới bờ
Con nào chẳng tới bờ \\ Dù muôn vời cách trở
Dù muôn vời cách trở
\end{minipage}}
7 Ví dụ 5.9 8: 2
\fbox{\begin{minipage}{5cm} Trước muôn trùng sóng
Trước muôn trùng sóng bể\\
bể
Em nghĩ về anh, em
Em nghĩ về anh, em
\end{minipage}}
Điều này hoạt động chính xác giống như môi trường minipage,
nhưng chiều rộng của hộp chiếm giá trị tối đa không lớn hơn
<chiều rộng> mà tại đó bố cục vẫn là tối ưu. Ví dụ: hãy xem
đoạn mã trước với môi trường varwidth:
7 Ví dụ 5.10 8: 2
\fbox{\begin{varwidth}{5cm} Trước muôn trùng sóng
Trước muôn trùng sóng bể\\
bể
Em nghĩ về anh, em
Em nghĩ về anh, em
\end{varwidth}}
Ở đây, các khoảng trống ở hàng trước có kích thước phù hợp,
nhưng để làm được điều đó, chiều rộng của hộp phải giảm một
chút từ 5cm.
Môi trường varwidth cũng có thể được sử dụng nếu các điểm
ngắt được chúng ta chỉ định, do đó chiều rộng của hộp là không
xác định. Sau đó thay thế <đ rộng> bằng \textwidth.
7 Ví dụ 5.11 8: 2
\fbox{\begin{varwidth}{\
Sóng bắt đầu từ gió
textwidth}
Sóng bắt đầu từ gió\\ Gió bắt đầu từ đâu?
Gió bắt đầu từ đâu?\\ Em cũng không biết nữa
Em cũng không biết nữa\\ Khi nào ta yêu nhau
Khi nào ta yêu nhau
\end{varwidth}}
Thao tác này vẽ một hình chữ nhật có chiều rộng <chiều rộng>
và chiều cao <chiều cao>, phần đáy của nó sẽ cao hơn mức cơ
bản theo số lượng <khoảng nâng>. Ví dụ
7 Ví dụ 5.12 8: 2
xx\rule[1ex]{2cm}{2mm}xx\\ xx xx
x\rule[0.5ex]{3cm}{1pt}x\\ x x
x\rule[-0.5ex]{3cm}{1pt}x
x x
Ta có thể kéo dài các hộp bằng cách sử dụng lệnh sau:
\scalebox{<x>}[<y>] {<hộp>} %trong gói graphicx.sty
<hộp> Hộp được cung cấp. Điều này có thể được thay thế bằng
văn bản thuần túy, đó là những gì sau đó coi như một cái
hộp.
<x> Hệ số giãn ngang (có thể âm).
<y> Hệ số giãn dài dọc (có thể âm) với giá trị mặc định là <x>.
7 Ví dụ 5.13 8: 2
sóng
\scalebox{1.5}{\fbox{sóng}} sóng sóng sóng
\scalebox{1.5}[1]{\fbox{só gnós sóng sóng
ng}}\\
\scalebox{-1}[1]{sóng}
\scalebox{1}[-1]{sóng}
\scalebox{-1}[-1]{sóng}
Như chúng ta thấy, chúng ta có thể phản ánh điều này. Ngoài
ra còn có một lệnh riêng để phản chiếu trục dọc:
<hộp> Hộp đã thay đổi kích thước. Điều này có thể được thay
thế bằng văn bản thuần túy, đó là những gì sau đó coi
như một cái hộp.
<chiều rộng> Chiều rộng của hộp đã thay đổi kích thước.
<chiều cao> Chiều cao của hộp đã thay đổi kích thước. Đây
là cho \resizebox từ đường cơ sở chiều cao đo được, trong
khi đối với \resizebox* nó có nghĩa là tổng chiều cao.
Nếu <chiều rộng> hoặc <chiều cao> tại chỗ ký hiệu ! , kích
thước tỷ lệ với khác thiết lập đúng cách.
7 Ví dụ 5.14 8: 2
sóng
\resizebox{!}{0.5cm}{sóng}
sóng
sóng sóng
\resizebox*{!}{0.5cm}{sóng} sóng
\resizebox{3cm}{0.5cm}{sóng
}
<hộp> Hộp để xoay. Văn bản này có thể được thay thế bằng văn
bản thuần túy, sau đó được coi như một hộp.
<góc quay> Góc quay theo độ. Nếu là giá trị dương, nó sẽ quay
ngược chiều kim đồng hồ.
<tâm quay> Tâm quay, có thể nhận các giá trị tl, t, tr, l, c, r,
Bl, B, Br, bl, b, br (mặc định là Bl). Chúng được giải thích
trong hình sau
7 Ví dụ 5.15 8
Hà Nội \rotatebox[origin=c]{90}{\fbox{Hà Nội}}
Hà Nội \rotatebox{90}{\fbox{Hà Nội}}
Hà Nội \rotatebox[origin=bl]{60}{\fbox{Hà Nội}}
Hà Nội \rotatebox[origin=Br]{-60}{Hà Nội}
Hà Nội
: 2
Hà Nội
Hà
Nộ
Hà Nội
Nộ
Hà
Hiển thị hộp đã tạo, nhưng coi tổng chiều cao của nó là 0pt.
7 Ví dụ 5.16 8: 2
\setlength{\fboxsep}{0pt} gg
\fbox{g} \fbox{\smash{g}}
Hiển thị hộp đã tạo, nhưng xử lý nó như thể chiều cao của nó
là 0pt.
7 Ví dụ 5.17 8: 2
\setlength{\fboxsep}{0pt} gg
\fbox{g} \fbox{\smash[t]{g}}
\llap{<văn bản>}
7 Ví dụ 5.19 8
ooooooooooooooo\llap{\rule[0.5ex]{2cm}{0.4pt}}aaaaa
: 2
oooooooooooooooaaaaa
Lệnh \mathllap trong mathtools.sty có thể được sử dụng
theo cách tương tự như \llap, ngoại trừ trong chế độ toán học
(xem sau).
\rlap{<văn bản>}
Nó xử lý hộp đã tạo như thể chiều rộng của nó là 0pt. Nội dung
của hộp phù hợp với bên phải của hộp. Vì thế
<hộp1>\rlap{<văn bản>}<hộp2>
Trong trường hợp <hộp1> nằm ngay sau <hộp2>, vì chiều
rộng của hộp <văn bản> là 0pt. Hộp văn bản xuất hiện với phía
bên trái của nó ở bên trái của hộp hộp là cân đối.
7 Ví dụ 5.20 8
ooooooooooooooo\rlap{\rule[0.5ex]{2cm}{0.4pt}}aaaaa
: 2
oooooooooooooooaaaaa
Lệnh \mathrlap trong gói mathtools.sty có thể được sử dụng
theo cách tương tự như \rlap, chỉ trong chế độ toán học (xem
sau).
\clap{<văn bản>}
7 Ví dụ 5.21 8
ooooooooooooooo\clap{\rule[0.5ex]{2cm}{0.4pt}}aaaaa
: 2
oooooooooooooooaaaaa
Lệnh \mathclap trong mathtools.sty có thể được sử dụng
theo cách tương tự như \clap, chỉ trong chế độ toán học (xem
sau).
Hộp được hoạt động như thể nó được viết bằng các chữ vô
hình.
7 Ví dụ 5.22 8: 2
\noindent Con sóng dưới lòng sâ Con sóng dưới lòng sâu
u\\ trên mặt nước
\phantom{Con sóng} trên mặt nướ
c
\vphantom{<văn bản>}
Tạo cái gọi là chiều rộng 0pt với chiều cao đầy đủ bằng tổng
chiều cao của <văn bản> và không xuất hiện.
7 Ví dụ 5.23 8: 2
\setlength{\fboxsep}{0pt} g
\fbox{g} \fbox{\vphantom{g}}
\hphantom{<văn bản>}
Tạo một hộp có chiều rộng bằng <văn bản>, cao 0pt và sâu 0pt.
<văn bản> không xuất hiện.
7 Ví dụ 5.24 8: 2
\setlength{\fboxsep}{0pt} g
\fbox{g} \fbox{\hphantom{g}}
Nếu bạn muốn chỉnh sửa một công thức toán học, hãy sử
dụng các gói mathtools.sty và amssymb.sty. Nếu một lệnh chỉ có
thể được truy cập bằng cách tải một trong hai gói này, nó sẽ
không còn được chỉ định riêng nữa.
Cần lưu ý rằng mathtools.sty là một phần mở rộng của gói
amsmath.sty. Điều này được thực hiện bằng cách để mathtools
.sty tải gói amsmath.sty trước, sau đó thêm các tính năng bổ
sung và sửa một số lỗi. Chúng ta sẽ không thảo luận về việc
mỗi lệnh được định nghĩa bởi amsmath.sty hay mathtools.sty.
Để làm điều này, hãy đọc mô tả gói.
Trong một công thức, các hằng và biến phải được lấy bằng
một chữ cái khác với chữ nghiêng. Để giải thích điều này, hãy
quan sát hai câu sau.
"Nếu a là dương và z là âm, thì az là âm."
"Nếu a là dương và z là âm, thì az là âm."
Nhưng đó không phải là tất cả. Chỉnh sửa biểu thức toán
là một trong những công việc sắp chữ phức tạp nhất. Do đó,
chúng ta cần cho LATEX biết rằng một biểu thức sau đây.
1. Nếu một biểu thức là bình thường như một từ, chúng tôi
chèn nó vào văn bản, như trong trường hợp sin 2β + cos 2β = 1.
Cái gọi là chế độ toán học liền văn bản. Nếu biểu thức toán lớn
hơn, phức tạp hơn hoặc cần được đánh dấu vì tầm quan trọng
của nó, thì biểu thức đó nên được ghi trên một dòng riêng biệt,
chẳng hạn như
∞ xn
ex = , ∀ x ∈ R.
X
n! n!
Cái này gọi là chế độ công thức toán. Bạn có thể nhập chế độ
toán học liền văn bản bằng cách sử dụng bất kỳ dòng nào trong
ba dòng sau:
$<biểu thức toán>$
\(<biểu thức toán>\)
\begin{math}<biểu thức toán>\end{math}
7 Ví dụ 6.1 8
Phép cộng $2+3=5$; Phép nhân \(ab\);
Phép trừ \begin{math}a-b\end{math}
: 2
Phép cộng 2 + 3 = 5; Phép nhân ab; Phép trừ a − b
Bạn có thể chỉ định chế độ toán học ưa thích bằng bất kỳ
dòng nào trong bốn dòng sau:
$$<biểu thức toán>$$
\[<biểu thức toán>\]
\begin{displaymath}<biểu thức toán>\end{displaymath}
\begin{equation*}<biểu thức toán>\end{equation*}
7 Ví dụ 6.2 8
Phép cộng $$2+3=5;$$ Phép nhân \[ab;\]
Phép trừ \begin{equation*}a-b.\end{equation*}
: 2
Phép cộng
2 + 3 = 5;
Phép nhân
ab;
Phép trừ
a − b.
2. Theo mặc định, các công thức toán học sẽ được căn
giữa. Tuy nhiên, bạn có thể sử dụng tùy chọn fleqn trong gói
mathtools.sty để căn chỉnh nó sang trái sao cho công thức bắt
đầu cách lề trái 2,5em. Giá trị này có thể được thay đổi bằng
lệnh sau:
\setlength{\mathindent}{<độ dài>}
7 Ví dụ 6.3 8
\newcommand{\kp}{\ensuremath{2\pi}}
Côsin của \kp\ là tuần hoàn, vì vậy $\cos(x+\kp)=\cos x$.
: 2
Côsin của 2π là tuần hoàn, vì vậy cos( x + 2π) = cos x.
4. Trong một số trường hợp, có thể cần đưa văn bản giải
thích hoặc kết nối vào công thức. Trong trường hợp này, chúng
ta cần tạm thời thoát khỏi chế độ toán học, bằng đưa vào lệnh
\text{<văn bản>} hoặc \mbox{<văn bản>}
7 Ví dụ 6.4 8: 2
$3+4=7 \text{và} 2+5=7$ 3 + 4 = 7và2 + 5 = 7
Như chúng ta có thể thấy, văn bản xuất hiện kém trong
công thức, mặc dù có một khoảng trống trong nguồn trước và
sau văn bản. Điều này được giải thích bởi thực tế là trong chế
độ toán học, khoảng trắng được bỏ qua. Trong trường hợp này,
giải pháp là xuất ra các khoảng trắng trong chế độ văn bản
hoặc thêm lệnh khoảng trằng trong toán.
7 Ví dụ 6.5 8: 2
$3+4=7 \text{ và } 2+5=7$\\ 3 + 4 = 7 và 2 + 5 = 7
$3+4=7\quad\mbox{và}\quad 2+5=7$ 3 + 4 = 7 và 2 + 5 = 7
7 Ví dụ 6.7 8: 2
$\frac{31}{54}{\displaystyle\frac{31}{54}}$ 31 31
54 54
7 Ví dụ 6.8 8: 2
\[\frac{31}{54}{\textstyle\frac{31}{54}}\]
31 31
54 54
Các chỉ số giống nhau trong cả hai chế độ toán học, cũng
như chỉ số của chỉ số. Nếu bạn không ghi vào chỉ mục nhưng
muốn chuyển sang kiểu chỉ mục, hãy sử dụng
\scriptstyle
Bạn có thể chuyển sang chế độ chỉ số index phong cách với lệnh
sau đây:
\scriptscriptstyle
7 Ví dụ 6.9 8: 2
$2^x {\scriptstyle 2^x} {\scriptscriptstyle 2 2x 2x 2x
^x}$
Các lệnh khai báo thay đổi kích thước phông chữ không
hiệu quả khi trong môi trường toán học, nhưng khi được cho ở
chế độ văn bản, chúng cũng thay đổi kích thước của các công
thức toán tiếp theo.
7 Ví dụ 6.10 8
Định lý Pitagore: $a^2+b^2=c^2$\\
{\Large Định lý Pitagore: $a^2+b^2=c^2$}
: 2
2 2 2
Định lý Pitagore: a + b = c
Định lý Pitagore: a2 + b2 = c2
1. Trong chế độ toán học, khoảng cách giữa các chữ cái và
khoảng trắng được xử lý khác với ở chế độ văn bản. Do đó,
phông chữ không được sử dụng lệnh \textit, \textrm, v.v. các
lệnh được chọn thay thế
\mathit{<Các ký tự>}
\mathrm{<Các ký tự>}
\mathbf{<Các ký tự>}
\mathsf{<Các ký tự>}
\mathtt{<Các ký tự>}
\mathnormal{<Các ký tự>}
Ví dụ, các hằng số phải được sử dụng với một chữ cái đứng:
7 Ví dụ 6.11 8: 2
$\mathrm{e}^{\mathrm{i}\pi}+1=0$ eiπ + 1 = 0
Lệnh \mathbf không nhất thiết hoạt động tốt. Ví dụ, nếu
bạn bạn muốn thực hiện nó trên tiêu đề, như trong các trường
hợp sau:
7 Ví dụ 6.12 8
\subsubsection*{Tổng điều hòa $ \mathbf{\sum\frac{1}{n}} $}
: 2
P1
Tổng điều hòa n
7 Ví dụ 6.13 8
\subsubsection*{Tổng điều hòa \( \pmb{\sum\frac{1}{n}} \) }
: 2
P1
Tổng điều hòa n
\pmb in đối số của nó gần nhau nhiều lần để đạt được hiệu
ứng đậm. Điểm yếu của giải pháp này xuất hiện khi phóng đại.
7 Ví dụ 6.14 8: 2
$ {\Huge \pmb{\Omega}} $
Ω
Lệnh \pmb hoạt động tương tự như
\bm{<các ký tự>} %trong gói bm.sty
Rất nhiều ký hiệu toán học và có một phiên bản táo bạo, đó
là
\boldsymbol{<các ký tự>}
Một số ký hiệu, chẳng hạn như tổng hoặc tích phân, không có
phiên bản in đậm. Trong trường hợp này, \boldsymbol không
hiệu quả. Trong trường hợp này, hãy sử dụng đoạn mã sau
trong phần mở đầu:
\usepackage{pdfrender}
\def\boldsymbolx#1{\textpdfrender{TextRenderingMode=2,
LineJoinStyle=1,LineWidth=.3pt}{#1}}
7 Ví dụ 6.16 8
\subsubsection*{Tổng điều hòa \(\boldsymbolx{\sum\frac{1}{n
}}\)}
: 2
P1
Tổng điều hòa n
\mathcal{<các ký tự>}
\mathscr{<các ký tự>} %trong gói lênh mathrsfs.sty
\mathbb{<các ký tự>}
\mathds{<các ký tự>} %trong gói lênh dsfont.sty
\mathds{<các ký tự>} %%[sans]dsfont.sty
\mathfrak{<các ký tự>}
$\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
$\mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
$\mathbb{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
$\mathds{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\
$\mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
A BC DE F G H I J K L M N O P QRS T U V W X Y Z
A BC DE F G H I J K L M N OPQRS T U V W X Y Z
ABCDEFGHIJKLMNOPQRSTUVWXYZ
6.5 Ký tự có dấu
...
ô \hato ò \graveo o \dddoto
....
õ \tildeo ŏ \breveo o \ddddoto
ō \baro ǒ \checko o̊ \mathringo
⃗
o \veco ȯ \doto
ó \acuteo ö \ddoto
Nếu bạn muốn đặt các dấu trên i và j trong chế độ toán
học, hãy sử dụng lệnh \imath và \jmath thay vì các lệnh \i và
\j đã biết trước đây.
7 Ví dụ 6.17 8: 2
$\check{\imath}\quad\ddot{\jmath}$ ı̌ ȷ̈
% \% ∇ \nabla ∢ \sphericalangle
⊥ \bot ∂ \partial ♭ \flat
⊤ \top ð \eth ♯ \sharp
∥ \| ; \emptyset ♮ \natural
¬ \neg ∞ \infty # \#
∀ \forall △ \triangle 1◦ 1^\circ
∃ \exists □ \square 1′ 1’
Ø \nexists ■ \blacksquare 1′′ 1”
ℜ \Re ∠ \angle
ℑ \Im ∡ \measuredangle
+ + \ \setminus • \bullet
− - ∩ \cap ⊕ \oplus
/ / ∪ \cup ⊖ \ominus
± \pm ∧ \wedge ⊙ \odot
∓ \mp ∨ \vee ⊘ \oslash
· \cdot ⋆ \star ⊗ \otimes
× \times ∗ *
÷ \div ◦ \circ
7 Ví dụ 6.18 8: 2
$a+b$ a+b
Những ký hiệu khác muốn có khoảng trắng nhỏ như vậy phải
dùng
\mathbin{<ký hiệu>}
7 Ví dụ 6.19 8: 2
$a\dag ab$\quad $a\mathbin{\dag}ab$ a†ab a † ab
← \leftarrow ) \leftharpoondown
←− \longleftarrow * \rightharpoonup
→ \rightarrow + \rightharpoondown
−→ \longrightarrow ↑ \uparrow
↔ \leftrightarrow ↓ \downarrow
←→ \longleftrightarrow ↕ \updownarrow
⇐ \Leftarrow ⇑ \Uparrow
⇐= \Longleftarrow ⇓ \Downarrow
⇒ \Rightarrow ⇕ \Updownarrow
=⇒ \Longrightarrow ↗ \nearrow
⇔ \Leftrightarrow ↘ \searrow
⇐⇒ \Longleftrightarrow ↙ \swarrow
7 → \mapsto ↖ \nwarrow
7−→ \longmapsto
( \leftharpoonup
7 Ví dụ 6.21 8: 2
$a\not=b$, $a\not\in A$ a ̸= b, a ̸∈ A
Trong một số trường hợp, điều này không thực hiện tốt:
7 Ví dụ 6.22 8: 2
$ \not\mid \quad \not\parallel \quad ̸| ̸∥ ̸↓ ̸↑
\not\downarrow \quad \not\uparrow$
Một ký hiệu quan hệ phủ định thiết kế đặc biệt nên được
sử dụng thay thế:
7 Ví dụ 6.23 8: 2
$ \nmid \quad \nparallel \quad
↚
↛
∤ ∦
\ndownarrow \quad \nuparrow $
LATEX coi bất kỳ ký hiệu như toán tử, khi ta đưa nó vào
lệnh.
\mathrel{<ký hiệu>}
7 Ví dụ 6.25 8: 2
$a|b$,\quad $a\mathrel{|}b$ a| b , a|b
Bạn cũng có thể tạo một tín hiệu quan hệ bằng cách chồng các
ký hiệu lên nhau:
\stackrel{<ký hiệu trên>}{<ký hiệu dưới>}
7 Ví dụ 6.26 8: 2
$A\stackrel{f}{\longrightarrow}B$ f
A −→ B
7 Ví dụ 6.27 8
$1,2,\dots,n$, $\quad 1+2+\dots+n$, $\quad \int\dots\int$
: R R 2
1, 2, . . . , n , 1 + 2 + · · · + n, ···
7 Ví dụ 6.28 8
$12\dots n$, $\quad 1\times 2\times\dots\times n$
: 2
12 . . . n, 1×2×···× n
( ( 〉 \rangle ⌞ \llcorner
) ) ⌈ \lceil ⌟ \lrcorner
[ [ hoặc \lbrack ⌉ \rceil | | hoặc \vert
] ] hoặc \rbrack ⌊ \lfloor ∥ \| hoặc \Vert
{ \{ hoặc \lbrace ⌋ \rfloor
} \} hoặc \rbrace ⌜ \ulcorner
〈 \langle ⌝ \urcorner
2. Tất cả các dấu ngoặc đơn đều có phiên bản trái (mở) và
phải (đóng), ngoại trừ | và dấu ||. Do đó, việc sử dụng cái sau
xấu hơn trong một số trường hợp.
7 Ví dụ 6.29 8: 2
$|-1|$ | − 1|
cho kết quả không tốt vì chương trình giải thích điều này là
| trừ 1 khỏi dấu, để lại khoảng trắng xung quanh dấu -. Một
giải pháp cho điều này là chặn -1
7 Ví dụ 6.30 8: 2
$|{-1}|$ |−1|
Các giải pháp khác là để có được hiểu như một dấu ngoặc
đơn mở với lệnh:
\mathopen
7 Ví dụ 6.31 8: 2
$\mathopen|-1|$ |−1|
Nếu bạn muốn diễn giải một ký tự như một dấu ngoặc đóng,
hãy đặt một ký tự ở trước nó
\mathclose
7 Ví dụ 6.32 8: 2
$]-1, 1[\setminus\{0\}$ ] − 1, 1[\{0}
Có thể thấy, kết quả là không tốt, vì dấu ] được hiểu là dấu
ngoặc đóng, nên dấu sau nó được hiểu là một phép trừ, ngược
lại, dấu [ được hiểu là dấu ngoặc mở, nên dấu sau \ không
được coi là một quan hệ. Một giải pháp khả thi là tạm thời giải
thích ] như một dấu ngoặc mở và [ như một dấu ngoặc đóng:
7 Ví dụ 6.33 8: 2
$\mathopen]-1, 1\mathclose[\setminus\{0\ ]−1, 1[ \ {0}
}$\\ ]−1, 1[ \ {0}
${]{-1}, 1[}\setminus\{0\}$\\ [−1, 1] \ {0}
$[-1, 1]\setminus\{0\}$
3. Kích thước của các dấu ngoặc đơn phía trước không phù
hợp với công thức. Ví dụ, mã sau trả về một kết quả không
chính xác:
7 Ví dụ 6.34 8: 2
\[f(\frac{1}{2})=0\] 1
f( )=0
2
Trong trường hợp này, hãy đặt trước dấu ngoặc đơn mở và
trước dấu ngoặc đơn đóng
\left <ngoặc mở>
\right <ngoặc dóng>
7 Ví dụ 6.35 8: 2
\[f\left(\frac{1}{2}\right)=0\] 1
µ ¶
f =0
2
Các lệnh \left và \right không chỉ ảnh hưởng đến kích
thước mà còn tăng khoảng cách xung quanh dấu ngoặc đơn.
Nếu bạn không muốn điều này, hãy sử dụng các lệnh sau thay
vì \left và \right
\mleft %trong gói mleftright.sty
\mright %trong gói mleftright.sty
7 Ví dụ 6.37 8 :¡ 2
$f\mleft(-\frac{1}{2}\mright)=0$,\\ − 1 = 0,
¢
f
$f\left(-\frac{1}{2}\right)=0$ ¡ 21 ¢
f −2 = 0
Nếu bạn muốn đạt được hiệu ứng tương tự với các lệnh \
left và \right, hãy nhập
\mleftright %trong gói mleftright.sty
Nếu bạn cần một dấu ngoặc đơn cần được định kích thước
để vừa với công thức và bạn không muốn hiển thị cả đôi ngoặc
đơn, Giới hạn này được đưa ra bởi một dấu ngoặc đơn vô hình
\left. \right.
7 Ví dụ 6.38 8 :¡ 2
$\left.\left(1+x^2\right)’\right|_{x=1}
¯
2 ′¯
¢
1+ x ¯ =2
=2$ x=1
Nếu có một công thức trong ngoặc đơn có kích thước tự động
chỉ có thể vừa với nhiều hàng hơn và công thức cao hơn ở hàng
đầu tiên so với ở hàng thứ hai, thì dấu ngoặc đóng sẽ không có
kích thước chính xác.
7 Ví dụ 6.39 8: 2
$\left(\frac1{1+\frac12},1,
µ
1
2, , 1, 2, . . . ,
1+ 12
\ldots,\right.$\\ n − 1, n )
\hfill $\left.n-1,n\right)$
7 Ví dụ 6.40 8: 2
$\left(\frac1{1+\frac12},1,
µ
1
2, , 1, 2, . . . ,
1+ 12
\ldots,\right.$\\
¶
\hfill $\left.n-1,n\ n − 1, n
vphantom{
\frac1{1+\frac12}}\right)$
Dấu ngoặc đơn bên ngoài phải lớn hơn một chút, nhưng
điều này không được tạo ra bởi công thức trên. Trong trường
hợp này, bạn cũng có thể sử dụng tăng kích thước cố định. Tăng
bên trái \left, tăng cho bên phải \right
\bigl \Bigl \biggl \Biggl
\bigr \Bigr \biggr \Biggr
Để sử dụng dấu ngoặc có kích thước cố định như một dấu toán
học thông thường, hãy sử dụng các lệnh sau:
\big \Big \bigg \Bigg
7 Ví dụ 6.44 8 :¡ 2
$\left(1+x^2\right)’\Big|_{x=1}=2$
¯
2 ′¯
¢
1+ x ¯ =2
x=1
Để sử dụng dấu ngoặc cố định làm quan hệ, hãy sử dụng các
lệnh sau:
\bigm \Bigm \biggm \Biggm
7 Ví dụ 6.45 8 :½ 2¾
$\left\{\frac{2^{n^2}}{n^2}\bigm| n \ n2
2
¯
¯ n nguyên
text{ nguyên}\right\}$ n2
Các dấu ngoặc đơn có kích thước cố định trước được xác định
theo sơ đồ sau:
\makeatletter
\def\<tên>{\bBigg@{<kích cỡ>}}
\def\<tên>m{\mathrel\<tên>}
\def\<tên>l{\mathopen\<tên>}
\def\<tên>r{\mathclose\<tên>}
\makeatother
Kích thước 3 và 3.5 không còn được xác định, nhưng bạn có thể
làm như vậy với mã sau:
\makeatletter
\def\biggg{\bBigg@{3}}
\def\bigggm{\mathrel\biggg}
\def\bigggl{\mathopen\biggg}
\def\bigggr{\mathclose\biggg}
\def\Biggg{\bBigg@{3.5}}
\def\Bigggm{\mathrel\Biggg}
\def\Bigggl{\mathopen\Biggg}
\def\Bigggr{\mathclose\Biggg}
\makeatother
4.Bạn có thể xác định một lệnh cho phép tham số của các
dấu ngoặc đã chọn. Để làm điều này, hãy sử dụng
\DeclarePairedDelimiter{\<tên lệnh>}{<ngoặc đơn trái>}{<ngo
ặc đơn phải>}
7 Ví dụ 6.47 8: 2
$\dbr{1+\dfrac{1}{2}}$, 1 1 1
µ ¶ · ¸ ½ ¾
$\dbs{1+\dfrac{1}{2}}$, 1+ , 1+ , 1+
2 2 2
$\dbc{1+\dfrac{1}{2}}$
Việc phân tách các trường hợp trong đó dấu ngoặc đơn
không hoạt động như một dấu ngoặc đơn đã được thảo luận
phần trước. Trong số những cách thứ khác nhau, môi trường
cases có thể được sử dụng cho việc này.
7 Ví dụ 6.48 8: 2
\[f(x)=\begin{cases}
0,&\text{nếu }x\in\mathbb{Q},\\
(
0, nếu x ∈ Q,
1,&\text{ngược lại}. f ( x) =
\end{cases}\] 1, ngược lại.
Môi trường cases hoạt động giống như một bảng hai cột,
với cả hai cột ở chế độ toán học theo kiểu \textstyle. Do đó,
cần phải ghi văn bản vào lệnh \text trong cột thứ hai. Các môi
trường khác:
dcases Nó khác với cases ở chỗ trong cả hai cột, chúng ta đang
ở chế độ toán học theo kiểu \displaystyle.
7 Ví dụ 6.49 8: 2
\[f(x)=\begin{dcases}
0,&\text{nếu }x=\frac{1}{2} 1
\\
0, nếu x =
f ( x) = 2
1,&\text{ngược lại}.
1, ngược lại.
\end{dcases}\]
rcase Nó khác với cases ở chỗ dấu ngoặc đơn ở bên phải.
7 Ví dụ 6.50 8: 2
\[\begin{rcases}
x = 12
)
x=\frac{1}{2}&\\
y=1& là nghiệm
y=1
\end{rcases}
\text{là nghiệm}\]
drcase Nó khác với dcases ở chỗ dấu ngoặc đơn ở bên phải.
Mỗi môi trường phân tách chữ hoa chữ thường cũng có một
phiên bản * khác với phiên bản bình thường ở chỗ cột thứ hai
ở chế độ văn bản.
7 Ví dụ 6.51 8: 2
\[f(x)=\begin{cases*}
0,&nếu $x$ là số hữu tỷ,\\
(
0, nếu x là số hữu tỷ,
1,&nếu $x$ là số vô tỷ. f ( x) =
\end{cases*}\] 1, nếu x là số vô tỷ.
7 Ví dụ 6.52 8: 2
$f\colon A\rightarrow B$ (ký hiệu f : A → B (ký hiệu)
)\\ f : A → B (toán
$f:A\rightarrow B$ (toán thường) thường)
x yz \underleftarrow{xyz}
←−−
−
x−yz
→ \overrightarrow{xyz}
x yz \underrightarrow{xyz}
−−→
← →
x yz \overleftrightarrow{xyz}
x yz \underleftrightarrow{xyz}
←→
tren
←−−− \xleftarrow[duoi]{tren}
duoi
tren
−−−→ \xrightarrow[duoi]{tren}
duoi
tren
←−−→ \xleftrightarrow[duoi]{tren}
duoi
tren
⇐=== \xLeftarrow[duoi]{tren}
duoi
tren
===⇒ \xRightarrow[duoi]{tren}
duoi
tren
⇐==⇒ \xLeftrightarrow[duoi]{tren}
duoi
tren
←−−−- \xhookleftarrow[duoi]{tren}
duoi
tren
7−−−→ \xmapsto[duoi]{tren}
duoi
tren
,−−−→ \xhookrightarrow[duoi]{tren}
duoi
tren
(−−− \xleftharpoonup[duoi]{tren}
duoi
tren
)−−− \xleftharpoondown[duoi]{tren}
duoi
tren
−−−* \xrightharpoonup[duoi]{tren}
duoi
tren
−−−+ \xrightharpoondown[duoi]{tren}
duoi
tren
)
−−−*
−−− \xrightleftharpoons[duoi]{tren}
duoi
tren
(
−−−+
−−− \xleftrightharpoons[duoi]{tren}
duoi
|xxxxxx
{z } \underbrace{xxxxxx}
xxxxxx
| {z } \underbrace{xxxxxx}_{n}
n
xxxxxx \underbracket{xxxxxx}
xxxxxx \underbracket{xxxxxx}_{n}
n
z }| {
xxxxxx \overbrace{xxxxxx}
6.15 Ma trận
R
trong đó các giá trị có thể có của <môi trường ma trận> là:
matrix Không có dấu ngoặc biên.
7 Ví dụ 6.58 8
\[\begin{pmatrix} a & b\\ c & d \end{pmatrix}
\begin{bmatrix} a & b\\ c & d \end{bmatrix}
\begin{vmatrix} a & b\\ c & d \end{vmatrix}\]
: ¯ ¯
2
a b a b ¯a b ¯
¯ ¯
¯ ¯
¯ ¯
c d c d ¯ c d¯
a b
2. Trong khi văn trên dòng văn bản để đẹp hơn thay
c d
¡a b¢
vào đó ma trận c d . Đối với điều này, mỗi môi trường ma trận
RR
trước đó có một phiên bản nhỏ:
smallmatrix Không có dấu ngoặc biên.
psmallmatrix
bsmallmatrix RR Dấu biên có dạng dấu ngoặc đơn ( ).
Dấu biên có dạng [ ].
Bsmallmatrix
vsmallmatrix
Vsmallmatrix
R
R
Dấu biên có dạng { }.
Dấu biên |có hình dạng | |.
Dấu biên có hình || ||.
7 Ví dụ 6.59 8
\[\begin{psmallmatrix} a & b\\ c & d \end{psmallmatrix}
\begin{bsmallmatrix} a & b\\ c & d \end{bsmallmatrix}
\begin{vsmallmatrix} a & b\\ c & d \end{vsmallmatrix}\]
: ¡ a b ¢£ a b ¤¯ a b ¯ 2
¯ ¯
c d c d c d
trường hợp này bạn có thể chỉ định tùy chọn căn chỉnh các cột
sang phải (r) hoặc sang trái (l). V
7 Ví dụ 6.60 8
\[\begin{bmatrix*}[r] -a & b\\ c & -d \end{bmatrix*}
\begin{vmatrix*}[l] 1.2 & 1\\ 2 & 2.23 \end{vmatrix*}\]
: ¯ ¯
2
−a b ¯1 . 2 1 ¯
¯ ¯
¯ ¯
¯ ¯
c −d 2
¯ 2.23¯
bằng lệnh trong đó <độ dày> là mật độ của hàng điểm (mặc
định 1) và <số cột> là số cột được chấm điểm.
7 Ví dụ 6.61 8: 2
\[\begin{pmatrix}
1&2&3&\hdotsfor[2]{3}&n\\
1 2 3 ...... n
2&3&\hdotsfor{2}&n&n+1\\
3&\hdotsfor{2}&n&n+1&n+2 2 3
. . n n + 1
\end{pmatrix}\]
3 .. n n+1 n+2
7 Ví dụ 6.62 8: 2
\[\begin{pmatrix}
1&2&3&\ldots&n\\ 1 2 3 . . . n
0&1&2&\ldots&n-1\\
0 1 2 . . . n − 1
\hdotsfor[0.5]{5}\\
0&0&0&\ldots&1
...........
\end{pmatrix}\]
0 0 0 ... 1
Lệnh \hdotsfor không hoạt động tốt nếu bạn cũng sử dụng gói
colortbl.sty. Trong trường hợp này, sau khi tải gói mathtools,
hãy viết như sau trong phần mở đầu:
\makeatletter
\def\hdots@for#1#2{\multicolumn{#2}c%
{\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@
\xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace
@$}%
\hskip\z@\@plus 1filll
\mkern-#1\dotsspace@}%
}
\makeatother
1. Chúng tôi đã thấy những khả năng này trước đây với các
ký hiệu ngang có độ dài khác nhau và các ký hiệu quan hệ.
Mỗi lệnh được mô tả ở đó dẫn đến một kiểu quan hệ. Bây giờ
chúng tôi mô tả hai lệnh khác:
\overset{<trên>}{<dưới>}
\underset{<dưới>}{<trên>}
7 Ví dụ 6.63 8: 2
$a\overset{*}{+}b\underset{\mathrm{d}}{=}c$ ∗
a+b = c
d
7 Ví dụ 6.64 8
\[P(A)+P(\overline{A})
\underset{\underset{\mathclap{\text{sự bổ sung}}}{\Uparrow}
}{=}
P(\Omega)\overset{\overset{\mathclap{\text{5.~tiên đề}}}
{\Downarrow}}{=}1\Longrightarrow P(\overline{A})=1-P(A)\]
: 2
5. tiên đề
⇓
P ( A ) + P ( A ) = P (Ω) = 1 =⇒ P ( A ) = 1 − P ( A )
⇑
sự bổ sung
2.Nếu bạn muốn xây dựng một cụm ký tự toán học bình
thường theo kiểu \scriptstyle, ít nhất đa hai dòng, hãy sử
dụng
\substack{<dong1>\\ <dong2>\\ ...}
7 Ví dụ 6.66 8: 2
\[\sum_{\begin{subarray}{l} X
a i jk
i=1,2,\ldots\\ i =1,2,...
j\in\mathbb{Z}\\ j ∈Z
k=j,j+1\ldots k= j, j +1...
\end{subarray}} a_{ijk}\]
7 Ví dụ 6.67 8: 2
$x_{n+1}, x^{n+1}, x_{k}^{n+1}$ xn+1 , x n+1 , xkn+1
Các chỉ số trên được di chuyển xuống thấp hơn bằng cách sử
dụng lệnh \cramped.
7 Ví dụ 6.68 8: x x
2
$\cramped{{x^2}^x} {x^2}^x$ x2 x2
2. Toán tử có thể lập chỉ số tất cả bốn góc hoặc thấp hơn và
cao hơn.
\sideet{_{<dưới trái>}^{<trên trái>}}{_{<dưới phải>}^{<trên
phải>}}{<toán tử>}
<toán tử>\limit_{<dưới>}^{<trên>}
7 Ví dụ 6.69 8: 2
$\sideset{_{a}^{b}}{_{c}^{d}}{\prod}$ b Yd 2
và
Q
và $\prod\limits_{1}^{2}$ a c
1
3. Nếu không muốn làm điều tương tự với một toán tử, ta
phải tạm thời tạo ký hiệu để được lập chỉ số một toán tử bằng
lệnh.
\mathop{<ký hiệu>}
7 Ví dụ 6.70 8: 2
$\sideset{_{a}^{b}}{_{c}^{d}}{\mathop{X}}$ b d
2
và $\mathop{X}\limits_{1}^{2}$ aXc và X
1
Chỉ số phía dưới bên trái và phía trên cũng có thể được viết
như sau:
\prescript{<trên trái>}{<dưới trái>}{<ký hiệu>}
7 Ví dụ 6.71 8: 2
$\prescript{14}{2}{C}$, 14 3
2 C , 12 H
$\prescript{3}{12}{H}$
7 Ví dụ 6.72 8: 2
$\frac{x^2}{x+1}$,$\tfrac{x^2}{x+1}$, 2
x2 x2 x
$\dfrac{x^2}{x+1}$ x+1 , x+1 , x+1
7 Ví dụ 6.73 8: !2
$\binom{n+1}{m}$,$\tbinom{n+1}{m}$,
Ã
¡n+1¢ ¡n+1¢ n+1
$\dbinom{n+1}{m}$ m , m ,
m
2. Ta cũng có thể tạo các phân số theo phong cách của riêng
mình:
\genfrac{<biên trái>}{<biên phải>}{<độ dày>}{<kiểu>}{<số trên>}{<số d
ưới>}
7 Ví dụ 6.77 8
\[A=\frac{\splitfrac{xy+xy+xy+xy+xy+{}}{+xy+xy+xy+xy}}{z}\]
: 2
xy+ xy+ xy+ xy+ xy+
+ xy+ xy+ xy+ xy
A=
z
X Y a
\sum \prod \coprod
×
]
\biguplus \bigtimes
Trong các tài liệu đòi hỏi dấu tích phân không được viết
nghiêng mà ở dạng đứng. Để thực hiện việc này, hãy tải gói
cmupint.sty nếu bạn đang sử dụng phông chữ Hiện đại Máy
tính Châu Âu hoặc Hiện đại La tinh. Có các gói thay đổi phông
chữ trong đó việc này được thực hiện tự động hoặc tùy chọn. Ví
dụ như các gói pxfonts.sty, newtxmath.sty, newpxmath.sty.
Ngoài ra còn có một phiên bản lớn hơn của toán tử \bigtimes
là \varprod trong gói lệnh pxfonts.sty.
Gói pxfonts.sty cũng thay đổi bộ phông chữ cơ sở. Nếu
không sử dụng gói này, bạn có thể xác định toán tử \varprod
bằng cách nhập thông tin sau vào phần mở đầu:
\DeclareSymbolFont{largesymbolsA}{U}{pxexa}{m}{n}
\DeclareMathSymbol{\varprod}{\mathop}{largesymbolsA}{16}
7 Ví dụ 6.78 8 :P 2
$\sum i^2$ \[\sum i^2\] 2
i
i2
X
Chỉ số của các hàm “không giới hạn” luôn xuất hiện bên
cạnh tên hàm. Ví dụ
7 Ví dụ 6.79 8: 2
\[\int_a^bf(x)dx\] Z b
$\int_a^bf(x)dx$ f ( x) dx
a
Rb
a f ( x) dx
7 Ví dụ 6.80 8: 2
$\operatorname{cotg}(x)$ cotg( x)
7 Ví dụ 6.81 8 :P∞ 2
$\sum_{n=1}^\infty a_n$ n=1 a n
\[\sum_{n=1}^\infty a_n\] ∞
X
an
n=1
7 Ví dụ 6.82 8: 2
$\lim_{n\rightarrow\infty}a_n limn→∞ a n
$
\[\lim_{n\rightarrow\infty}a_ lim a n
n→∞
n\]
Nếu bạn muốn thay đổi điều này tại một vị trí cụ thể, bạn
có thể làm như vậy với lệnh \limits và \nolimits.
7 Ví dụ 6.83 8: 2
$\sum\limits_{n=1}^\infty a_n ∞
P
an
$ n=1
\[\sum\nolimits_{n=1}^\infty X∞
a_n\] n=1
an
Lệnh \limits không ảnh hưởng đến các hàm "không giới
hạn", ngoại trừ dấu tích phân:
7 Ví dụ 6.84 8
$\log\limits_2x, \int\limits_a^bf(t)dt$
\[\log\limits_2x, \int\limits_a^bf(t)dt\]
: 2
Rb
log2 x, f ( t) dt
a
Zb
log2 x, f ( t) dt
a
Ký hiệu tích phân có thể được tạo thành một hàm “giới hạn”
với tùy chọn intlimits trong gói mathtools.sty. Sau đó, tích
phân hoạt động chính xác như bất kỳ tín hiệu toán tử lớn nào
khác.
LATEX coi bất cứ ký tự là một hàm "giới hạn" mà nó sử dụng
với * của lệnh
\operatorname*{<dãy ký tự>}
7 Ví dụ 6.85 8: 2
$\operatorname*{Max}_{k}$ Maxk
\[\operatorname*{Max}_{k}\] Max
k
Khoảng trắng xung quanh các hàm "giới hạn" có thể trở
nên quá lớn đối với các chỉ số dài.
7 Ví dụ 6.86 8: 2
\[X=\sum_{1\leq i\leq j\leq X
X= Vi j
n}V_{ij}\] 1≤ i ≤ j ≤ n
Tùy chọn r hoặc l loại bỏ khoảng trống thừa ở bên phải hoặc
bên trái.
7 Ví dụ 6.88 8
\[X=\smashoperator[r]{\sum_{1\leq i\leq j\leq n}}V_{ij}\
quad
X=\smashoperator[l]{\sum_{1\leq i\leq j\leq n}}V_{ij}\]
: X X 2
X= Vi j X= Vi j
1≤ i ≤ j ≤ n 1≤ i ≤ j ≤ n
Các hàm "giới hạn" cũng không cho kết quả hoàn hảo trong
trường hợp sau:
7 Ví dụ 6.89 8: 2
\[\limsup_{n\to\infty}\max_{p\geq n}\
]
lim sup max
n→∞ p≥ n
Chỉ số của hai chức năng không cùng cấp vì độ sâu của hộp
chức năng là khác nhau. Lệnh \adjustlimits giúp giải quyết
vấn đề này.
7 Ví dụ 6.90 8: 2
\[\adjustlimits\limsup_{n\
lim sup max
to\infty}\max_{p\geq n}\ n→∞ p≥ n
]
Bạn có thể cần một hàm không có sẵn theo mặc định. Ví dụ,
trong tiếng Việt, hàm Tang và Côtang là tg và cotg, trong đó
chỉ có phiên bản tiếng Anh (tan và cot) được định nghĩa. Trong
trường hợp này, chúng ta có thể tự làm những cái mới. Chức
năng "giới hạn" với các lệnh sau
\newcommand{<lệnh>}{\mathop{\mathrm{<tên lệnh>{}}}} hoặc
\DeclareMathOperator*{<lệnh>}{<tên lệnh>} %Chỉ viết trong m
ở đầu
Ví dụ
\newcommand{\Min}{\mathop{\mathrm{Min{}}}}
\DeclareMathOperator*{\Min}{Min}
Ta có thể sử dụng
7 Ví dụ 6.91 8: 2
$\Min_{k\in\mathbb{N}}$ Mink∈N
\[\Min_{k\in\mathbb{N}}\] Min
k∈N
Một chức năng "giới hạn" hiện có có thể được xác định lại.
\renewcommand{<lệnh>}{\mathop{\mathrm{<tên lệnh>{}}}}
Ví dụ: \renewcommand{\min}{\mathop{\mathrm{Min{}}}}
7 Ví dụ 6.92 8: 2
$\min_{k\in\mathbb{N}}$ Mink∈N
\[\min_{k\in\mathbb{N}}\] Min
k∈N
Một hàm "không giới hạn" mới có thể được xác định bằng các
lệnh sau:
\newcommand{<lệnh>}{\mathop{\mathrm{<tên lệnh>{}}}\nolimits
} hoặc
\DeclareMathOperator{<lệnh>}{<tên lệnh>} % ở đầu tệp
Ví dụ
\newcommand{\tg}{\mathop{\mathrm{tg{}}}\nolimits} hoặc
\DeclareMathOperator{\tg}{tg}
7 Ví dụ 6.93 8: 2
$\tg^2x$ \[\tg^2x\] tg2 x
tg2 x
Một chức năng “không giới hạn” hiện có, có thể được định nghĩa
lại.
\renewcommand{<lệnh>}{\mathop{\mathrm{<tên lệnh>{}}}\
nolimits}
Ví dụ \renewcommand{\tan}{\mathop{\mathrm{tg{}}}\nolimits}
7 Ví dụ 6.94 8: 2
$\tan^2x$ \[\tan^2x\] 2
tg x
tg2 x
Ký hiệu toán tử khác biệt tiêu chuẩn cho tích hợp và dẫn
xuất phải được xác định trong phần mở đầu như:
\DeclareMathOperator{\diff}{d\!}
7 Ví dụ 6.96 8: 2
\[\int f(x)\diff x \text{ v Z
d f ( x)
à } f ( x) d x và
dx
\frac{\diff f(x)}{\diff x}\
]
Có một lệnh \boxed đặc biệt để đóng khung một công thức
có chế độ toán học \displaystyle bên trong. Độ dày khung và
khoảng cách từ công thức có thể được điều chỉnh theo cách
tương tự như đối với \framebox.
7 Ví dụ 6.98 8: 2
\boxed{\sum_{n=1}^\infty} ∞
X P∞ ∞
X
\boxed{\textstyle\sum_{n=1}^\infty} n=1
$\boxed{\sum_{n=1}^\infty}$ n=1 n=1
Không có giải pháp tương tự cho một hộp màu, nhưng chúng
ta có thể tự xác định nó. Ví dụ
\newcommand{\colorboxed}[2]{%
\colorbox{#1}{\ensuremath{\displaystyle #2}}} % trong
xcolor.sty
7 Ví dụ 6.99 8: 2
\colorboxed{red}{\sum_{n=1}^\infty} ∞
X P∞ ∞
X
\colorboxed{red}{\textstyle\sum_{n=1} n=1
^\infty} n=1 n=1
$\colorboxed{red}{\sum_{n=1}^\infty}$
7 Ví dụ 6.100 8: 2
\[\begin{CD}
A @>>> B @<<< C \\ A −−−−→ B ←−−−− C
@VVV @AAA @| \\
x
°
°
D @>f>l> E @= F \\ y °
@VbVjV @AbAjA \\ f
D −−−−→ E F
G @<f<l< H l
x
\end{CD}\] j
by b j
f
G ←−−−− H
l
Gói xy.sty biết nhiều hơn thế, điều này không được trình bày
chi tiết ở đây.
7 Ví dụ 6.101 8: 2
\begin{equation}\label{pt1} 2
x + 3x − 5 = 0 (6.1)
x^2+3x-5=0
\end{equation} Phương trình (6.1). . .
Phương trình \eqref{pt1}\
dots
Nếu bạn muốn đánh số ở bên trái, hãy tải gói mathtools.sty
với tùy chọn leqno.
2. Đánh số trước đây được lấy trong lớp bài viết (article.cls).
Trong trường hợp này, việc đánh số liên tục trong toàn bộ tài
liệu, tức là nó không bắt đầu lại từ 1 khi một phần mới được
mở.
Nếu bạn sử dụng báo cáo (report.cls) hoặc lớp sách
(book.cls), số công thức được kèm theo số thứ tự của chương
hiện tại. Ví dụ, công thức 2 (1.2) trong Chương 1 được đánh
số. Mặt khác, số công thức sẽ khởi động lại khi bạn mở một
chương mới. Vì vậy, ví dụ, công thức 1 trong Chương 2 được
đánh số (2.1).
Nếu bạn muốn đạt được hiệu quả tương tự trong lớp bài
viết (chỉ với phần thay vì chương), hãy sử dụng mã sau:
\numberwithin{equation}{section}
7 Ví dụ 6.102 8: 2
\begin{equation}\label{pt2}
x2 + 3 x − 5 = 0 (*)
x^2+3x-5=0\tag{*}
\end{equation} Phương trình (*). . .
Phương trình \eqref{pt2}\
dots
7 Ví dụ 6.103 8: 2
\begin{equation}\label{pt3} 2
x + 3x − 5 = 0 T
x^2+3x-5=0\tag*{\fbox{T}}
\end{equation} Phương trình T . . .
Phương trình \refeq{pt3}\
dots
Chúng tôi đã thấy rằng đánh số mặc định được hiển thị
trong dấu ngoặc đơn ở phông chữ bình thường. Nếu bạn muốn
thay đổi điều này, hãy sử dụng
\newtagform{<tên>}[<định dạng>]{<ngoặc trái>}{<ngoặc phải>}
Từ nơi bạn muốn kích hoạt cài đặt này, hãy nhập
\usetagform{<tên>}
7 Ví dụ 6.104 8: 2
\newtagform{brackets}[\ 2
x + 3x − 5 = 0 [6.2]
textbf]{[}{]}
\usetagform{brackets} Phương trình [6.2]. . .
\begin{equation}\label{pt4}
x^2+3x-5=0
\end{equation}
Phương trình \eqref{pt4}\
dots
Bạn có thể quay lại cài đặt mặc định bằng lệnh sau
\usetagform{default}
Nếu một công thức không phù hợp với một hàng, nó cũng
có thể bị ngắt với môi trường multline.
\begin{multline}\label{multilevel}
<Dòng 1 của công thức> \\
<Dòng 2 của công thức> \\
...
<Dòng n của công thức>
\end{multline}
Trong môi trường này, hàng đầu tiên sẽ được căn bên trái,
hàng cuối cùng bên phải và những hàng khác sẽ được căn giữa
và đánh số ở hàng cuối cùng sẽ ở bên phải.
Nếu bạn đã tải gói mathtools.sty với tùy chọn fleqn để căn
chỉnh các công thức được đánh dấu ở bên trái, các hàng căn
giữa sẽ được căn ở bên trái.
Nếu bạn đã tải gói mathtools.sty với tùy chọn leqno để đánh
số ở bên trái, thì việc đánh số sẽ ở bên trái của dòng đầu tiên.
Để căn chỉnh một hàng ở bên trái, hãy đặt
\shoveleft{<dòng công thức>}
Các lệnh \tag hoặc \tag* cũng có thể được sử dụng ở đây cho
ký hiệu công thức tùy chỉnh.
Nếu bạn không muốn đánh số công thức, hãy sử dụng môi
trường multline*. Ví dụ
7 Ví dụ 6.105 8: 2
\begin{multline}\label{dt1}
1+8+27+64=\\
=1+3+5+7+{}\\ 1 + 8 + 27 + 64 =
+9+11+13+{}\\ = 1+3+5+7+
+15+17+19 + 9 + 11 + 13 +
\end{multline}
+ 15 + 17 + 19 (6.3)
7 Ví dụ 6.106 8: 2
\begin{multline}\label{dt2}
1+8+27+64=\\
\shoveleft{=1+3+5+7+{}}\\ 1 + 8 + 27 + 64 =
+9+11+13+{}\\ = 1+3+5+7+
+15+17+19 + 9 + 11 + 13 +
\end{multline}
+ 15 + 17 + 19 (6.4)
7 Ví dụ 6.107 8: 2
\begin{multline}\label{dt3}
1+8+27+64=\\
=1+3+5+7+{}\\ 1 + 8 + 27 + 64 =
\shoveright{+9+11+13+{}}\\ = 1+3+5+7+
+15+17+19 + 9 + 11 + 13 +
\end{multline}
+ 15 + 17 + 19 (6.5)
Nếu bạn cũng muốn điều chỉnh công thức gẫy với các điểm
cụ thể, bạn có thể sử dụng môi trường split.
\begin{equation}\label{method}
\begin{split}
<Dòng 1 của công thức> &<Dòng 1 của công thức> \\
<Dòng 2 của công thức> & <Dòng 2 của công thức> \\
...
<Dòng n của công thức> & <Dòng n của công thức>
\end{split}
\end{equation}
Một phần tách hoạt động tương tự như một bảng. Cột xác
định bằng & và ngắt dòng bằng \\. Không giống như môi trường
multline, điều này không cung cấp một môi trường toán học, vì
vậy điều này cần được quan tâm riêng. Do đó, trong đoạn mã
trước, nó được bao bọc trong một môi trường equation. Nhưng,
tất nhiên, nó có thể được đặt trong một môi trường equation*,
cho chúng ta một trường hợp mà không cần đánh số. Đánh số
của phương trình sẽ được căn giữa theo chiều dọc. Nếu ta tải
gói mathtools.sty với tùy chọn tbtags, số công thức sẽ xuất hiện
trên dòng cuối cùng. Nếu bạn thậm chí sử dụng tùy chọn leqno
để đánh số ở bên trái, thì đánh số công thức sẽ ở bên trái của
dòng đầu tiên. Ví dụ
7 Ví dụ 6.108 8: 2
\begin{equation}\label{sp1}
\begin{split} 50 = 1 + 24 + 25 =
50 &=1+24+25=\\
= 1+3+5+7+ (6.6)
&=1+3+5+7+{}\\
&\quad+9+11+11 + 9 + 11 + 11
\end{split}
\end{equation}
Nếu bạn muốn đóng khung một phần của công thức bị ngắt
có chứa & dùng \Aboxed.
7 Ví dụ 6.109 8: 2
\begin{equation*}
\begin{split} 50 = 1 + 24 + 25 =
\Aboxed{50 &=1+24+25}=\\
= 1+3+5+7+
&=1+3+5+7+{}\\
&\quad+9+11+11 + 9 + 11 + 11
\end{split}
\end{equation*}
Nếu bạn viết nhiều công thức dưới nhau, sử dụng liên tiếp
các môi trường \[... \], displaymath, equation* hoặc equation
sẽ không hoạt động tốt vì khoảng cách dọc giữa chúng sẽ quá
lớn. Trong trường hợp này, hãy sử dụng môi trường gather.
\begin{gather}
<1. công thức>\label{<label 1>} \\
<2. công thức>\label{<label 2>} \\
...
<n. công thức>\label{<label n>} \\
\end{gather}
Các lệnh \tag hoặc \tag* cũng có thể được sử dụng ở đây
cho ký hiệu công thức tùy chỉnh. Nếu bạn không muốn đánh
số công thức, hãy sử dụng môi trường gather*. Nếu bạn không
muốn chỉ đánh số một dòng, hãy đặt ở cuối dòng
\notag
7 Ví dụ 6.110 8: 2
\begin{gather}
(a+b)^2 \label{ct1}\\
(a + b)2 (6.7)
a^2+2ab+b^2\label{ct2}
\end{gather} a2 + 2ab + b2 (6.8)
Môi trường gather* được gọi là phiên bản hình thành công
thức con của môi trường gathered. Điều này có nghĩa là nó hoạt
động giống như gather*, nhưng cần được đặt ở chế độ toán
học liên văn bản, equation hoặc equation*. Môi trường gathered
cũng có một tùy chọn, giá trị có thể là c (mặc định), t hoặc b,
tùy thuộc vào việc bạn muốn căn giữa, đường cơ sở hay cuối
đường cơ sở. Hãy xem một số ví dụ
7 Ví dụ 6.112 8: 2
\[\left.\begin{gathered} (a + b) 2
)
(a+b)^2\\
a^2+2ab+b^2 a + 2ab + b2
2
\end{gathered}\right\}\]
7 Ví dụ 6.113 8: 2
\begin{equation}\label{ct4} (a + b)2
)
\left.\begin{gathered} (6.10)
(a+b)^2\\ a2 + 2ab + b2
a^2+2ab+b^2
\end{gathered}\right\}
\end{equation}
7 Ví dụ 6.114 8 : 2
\[\left.\begin{
gathered} (a + b)2 ( a − b )2
) )
(a+b)^2\\ và
a^2+2ab+b^2 a2 + 2ab + b2 a2 − 2ab + b2
\end{gathered}\right\}
\text{ và }
\left.\begin{gathered}
(a-b)^2\\
a^2-2ab+b^2
\end{gathered}\right\}
\]
a^2+2ab+b^2
\end{gathered}$ văn bản
Các công thức phụ có thể chứa các phần tử cần được dóng
với nhau theo cột. Có một số môi trường cho việc này. Trong
môi trường align, căn chỉnh là r@{}lr@{}l ... như đã học trong
bảng, trong đó khoảng cách trước cột đầu tiên, sau cột cuối
cùng và giữa các cột l và r được phân bổ đồng đều.
\begin{align}
<1. căn bên phải>&<trái>&<phải>&<trái>&<phải>...\label{<
label 1>}\\
7 Ví dụ 6.119 8
\begin{align}
x&=y+z & y&=bd & z&=bc \label{al1}\\
b&=10 & 2c&=56 & d&=44 \label{al2}
\end{align}
: 2
x = y+ z y = bd z = bc (6.11)
b = 10 2 c = 56 d = 44 (6.12)
Các lệnh \tag, \tag*, \notag có thể được sử dụng ở đây theo
cách tương tự như trong môi trường gather. Môi trường align*
thực hiện chính xác những gì align làm, nhưng không hiển thị
số công thức.
7 Ví dụ 6.120 8: 2
\begin{align*}
a&=(b+c)^2\\
a = ( b + c)2
&=(b+c)(b+c)\\
&=b^2+2bc+c^2 = ( b + c)( b + c)
\end{align*} = b2 + 2 bc + c2
7 Ví dụ 6.121 8
\begin{align*}
a&=(b+c)^2 && \text{bình phương một tổng}\\
&=(b+c)(b+c) &&\text{chuyển về tích}\\
&=b^2+2bc+c^2&&\text{kết quả nhân ra}
\end{align*}
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
210 Chương 6. Môi trường toán trong LATEX
7 Ví dụ 6.122 8
\begin{align*}
a&=(b+c)^2 & \text{bình phương một tổng}\\
&=(b+c)(b+c) &\text{chuyển về tích}\\
&=b^2+2bc+c^2&\text{kết quả nhân ra}
\end{align*}
: 2
Môi trường align* được gọi là phiên bản hình thành công
thức con của môi trường aligned. Điều này có nghĩa là nó hoạt
động giống như align*, nhưng phải được đặt ở chế độ toán
học liên văn bản, equation hoặc equation*. Môi trường aligned
cũng có một tùy chọn, giá trị có thể là c (mặc định), t hoặc b,
tùy thuộc vào việc bạn muốn căn chỉnh đường cơ sở cho chính
giữa, lên hay xuống. Hãy xem một số ví dụ
7 Ví dụ 6.123 8 : 2
dòng $\begin{aligned} x = y+ z y = bd z = bc
x&=y+z & y&=bd & z&=bc dòng chữ
b = 10 2 c = 56 d = 44
\\
b&=10 & 2c&=56 & d&=44
\end{aligned}$ chữ
7 Ví dụ 6.125 8 : 2
dòng $\begin{aligned}[ x = y+ z y = bd z = bc
b]
dòng b = 10 2 c = 56 d = 44 chữ
x&=y+z & y&=bd & z&=bc
\\
b&=10 & 2c&=56 & d&=44
\end{aligned}$ chữ
7 Ví dụ 6.126 8 : 2
\begin{equation}
)
\left.\begin{aligned} x = y+ z y = bd z = bc
x&=y+z & y&=bd & z&=bc (6.13)
b = 10 2 c = 56 d = 44
\\
b&=10 & 2c&=56 & d&=44
\end{aligned}\right\}
\end{equation}
7 Ví dụ 6.127 8 : 2
\[\left.\begin{aligned
) )
x = y+ z a = bc
} và
x&=y+z\\ z&=100 z = 100 c = 50
\end{aligned}\right\}
\quad\text{và}\quad
\left.\begin{aligned}
a&=bc\\ c&=50
\end{aligned}\right\}\
]
7 Ví dụ 6.128 8 : 2
\begin{flalign*}
x&=y+z & y&=bd & z&=bc
x = y+ z y = bd z = bc
\\
b&=10 & 2c&=56 & d&=44 b = 10 2 c = 56 d = 44
\end{flalign*}
7 Ví dụ 6.129 8
\begin{alignat}{3}
1&=1 &\qquad 2&=2 &\qquad 2&=1+1 \label{al3}\\
3&=3 & 3&=1+2& 3&=1+1+1 \label{al4}
\end{alignat}
: 2
7 Ví dụ 6.130 8: 2
\begin{alignat*}{3}
13&x+{} & 4&y & &=9\\
13 x + 4 y =9
3&x-{} & 12&y+{} & 23z&=14
\end{alignat*} 3 x − 12 y + 23 z = 14
Hệ phương trình tuyến tính dễ thực hiện hơn nhiều với lệnh
\systeme trong gói lệnh systeme.sty. Để có mô tả chung về điều
này, hãy xem mô tả của gói systeme.sty, bây giờ chúng tôi sẽ
minh họa hoạt động của nó chỉ với một vài ví dụ.
7 Ví dụ 6.132 8: 2
\[\systeme{2a-b+4c=2,
a+8b+5c=8, 2a − b + 4 c = 2
a + 8b + 5 c = 8
-a+2b+c=-5}\]
−a + 2 b + c = −5
7 Ví dụ 6.133 8: 2
\sysdelim{.}{\rbrace} 2a − b + 4 c = 2
\[\systeme{2a-b+4c=2,
a + 8b + 5 c = 8
a+8b+5c=8,
-a+2b+c=-5}\] −a + 2 b + c = −5
7 Ví dụ 6.134 8: 2
\[\systeme[][;]{1,5x-0,4y=0 ½
1, 5 x − 0, 4 y = 0, 7
,7;
x − 0,18 y = 1,4
x-0,18y=1,4}\]
7 Ví dụ 6.135 8
\[\systeme{(2\+\sqrt2)x-(1\-\sqrt2)y=1, x+(1\+\sqrt2)y=-1}\
]
: ( p p
2
(2 + 2) x − (1 − 2) y = 1
p
x + (1 + 2) y = −1
7 Ví dụ 6.136 8: 2
\[\systeme[xy]{mx-y=3, ½
mx − y=3
x-m^2y=1}\]
x − m2 y = 1
Quay trở lại môi trường alignat*, bây giờ nó có cái gọi là
phiên bản alignedat môi trường được căn chỉnh. Điều này có
nghĩa là nó hoạt động giống như alignat*, nhưng phải được
đặt ở chế độ toán học liên văn bản, equation hoặc equation*.
Môi trường alignedat cũng có một tùy chọn, giá trị có thể là c
(mặc định), t hoặc b, tùy thuộc vào việc bạn muốn căn chỉnh
đường cơ sở cho chính giữa, trên cùng hay dưới cùng. Hãy xem
một số ví dụ
7 Ví dụ 6.138 8: 2
\begin{equation}\label{al5}
)
11 x − 4 y = 7
\left.\begin{alignedat}{2} (6.16)
11&x-{} & 4y&=7\\ x− y=0
&x-{} & y&=0
\end{alignedat}\right\}
\end{equation}
7 Ví dụ 6.139 8: 2
\[\left.\begin{alignedat}{2
)
} 11 x − 4 y = 7
11&x-{} & 4y&=7\\ ⇒x= y=1
x− y=0
&x-{} & y&=0
\end{alignedat}\right\}
\Rightarrow x=y=1\]
7 Ví dụ 6.140 8: 2
dòng $\begin{alignedat}{2} 11 x − 4 y = 7
11&x-{} & 4y&=7\\ dòng văn bản
x− y=0
&x-{} & y&=0
\end{alignedat}$ văn bản
7 Ví dụ 6.141 8: 2
dòng $\begin{alignedat}[t]{ dòng 11 x − 4 y = 7 văn bản
2}
x− y=0
11&x-{} & 4y&=7\\
&x-{} & y&=0
\end{alignedat}$ văn bản
7 Ví dụ 6.143 8
\begin{eqnarray}
2x=2y & \Rightarrow & x=y \label{ar1}\\
6z=600 & \Rightarrow & z=100\nonumber
\end{eqnarray}
: 2
2x = 2 y ⇒ x = y (6.17)
6 z = 600 ⇒ z = 100
Môi trường này thường bị sử dụng sai trong các trường hợp
sau:
7 Ví dụ 6.144 8: 2
\begin{eqnarray*}
1+3 &=& 4\\
1+3 = 4
1+3+5 &=& 9
\end{eqnarray*} 1+3+5 = 9
Như bạn có thể thấy, ở đây dấu đẳng thức không được coi là
một dấu hiệu quan hệ, mà chỉ đặt nó ở giữa với quá nhiều
khoảng trống xung quanh nó. Môi trường này không được phát
minh cho các nhiệm vụ như vậy. Giải pháp đúng:
7 Ví dụ 6.145 8: 2
\begin{align*}
1+3 &=4\\
1+3 = 4
1+3+5 &=9
\end{align*} 1+3+5 = 9
Nếu số lượng công thức phù hợp được mở, nghĩa là, chỉ có thể
được biểu thị bằng ba điểm đặt thẳng đứng, hãy sử dụng các
giải pháp được hiển thị trong các ví dụ sau:
7 Ví dụ 6.146 8: 2
\begin{align*}
a_1 &= b_1 \\
a1 =
. b1
\shortvdotswithin{=} ..
a_n &= b_n an = bn
\end{align*}
7 Ví dụ 6.147 8: 2
\begin{alignat*}{3}
A&+ B &&= C &&+ D \\
A+
. B =. C +. D
\MTFlushSpaceAbove .. .. ..
&\vdotswithin{+} C+D =Y +K
&&\vdotswithin{=} &&\
vdotswithin{+}
\MTFlushSpaceBelow
C &+ D &&= Y &&+K
\end{alignat*}
Bạn cũng có thể đặt văn bản giữa các hàng công thức phù hợp.
Đó là nó
\intertext{text}
\shortintertext{text}
các lệnh hoạt động trong các môi trường sau: align, align*,
flalign, flalign*, alignat, alignat*.
7 Ví dụ 6.148 8
Nguyễn Hữu Điển https://www.facebook.com/groups/vietex/
6.26. Đánh số các công thức con 217
\begin{align*}
f(x) &=\int4x\ln x\,\mathrm{d}x=
\shortintertext{sau khi tích hợp một phần}
&=2x^2\ln x-x^2+C=x^2\left(2\ln x-1\right)+C.
\end{align*}
: 2
Z
f ( x) = 4 x ln x d x =
Nếu các công thức phù hợp có những công thức con và
bạn muốn đánh số chúng, bạn có thể sử dụng môi trường
subequations, trong đó các ngữ cảnh sau có thể được nhúng
vào nó: gather, align, flalign, alignat, eqnarray.
7 Ví dụ 6.149 8: 2
\begin{subequations}
\begin{gather}
x = ac + bc (6.18a)
x=ac+bc \label{ga1}\\
y>dc \label{ga2} y > dc (6.18b)
\end{gather}
\end{subequations}
Ví dụ: để thay đổi kiểu đánh số của công thức con thành (1/a),
hãy sao chép mã sau sau khi tải gói mathtools.sty:
\let\Subequations\subequations
\renewenvironment{subequations}
{\begin{Subequations}
\renewcommand{\theequation}{\theparentequation/\alph{
equation}}}{\end{Subequations}}
Theo mặc định, ngắt trang không được phép trong công
thức nhiều dòng. Có thể ngắt dong trong khối công thức nhiều
dòng bằng cách đặt ở đầu khối
\allowdisplaybreak
Việc ngắt trang sau đó sẽ tự động xảy ra. Ở một nơi nhất định
như vậy có thể buộc ngắt trang nếu \\ thay vào đó
\displaybreak \\
Bạn có thể tắt ngắt trang tại một vị trí cụ thể bằng cách nhập
\\* thay vì \\.
7 Ví dụ 6.150 8
\begin{align*}
\begin{autobreak}
\zeta(3) =1
+ \frac{1}{8}+ \frac{1}{27}+ \frac{1}{64}+ \frac{1}{125}
+ \frac{1}{216}+\frac{1}{343}+\frac{1}{512}+\frac{1}{729}
+ \frac{1}{1000}+ \frac{1}{1331}+ \cdots
\end{autobreak}
\end{align*}
: 2
Nguyễn Hữu Điển https://www.facebook.com/groups/vietex/
6.28. Tự động ngắt công thức dài dòng 219
1 1 1 1 1 1 1 1
ζ(3) = 1 + + + + + + + +
8 27 64 125 216 343 512 729
1 1
+ + +···
1000 1331
7 Ví dụ 6.151 8
\begin{align}
\begin{autobreak}
\zeta(3) =1
+ \frac{1}{8}+ \frac{1}{27}+ \frac{1}{64}+ \frac{1}{125}
+ \frac{1}{216}+\frac{1}{343}+\frac{1}{512}+\frac{1}{729}
+ \frac{1}{1000}+ \frac{1}{1331}+ \cdots
\end{autobreak}
\end{align}
: 2
1 1 1 1 1 1 1 1
ζ(3) = 1 + + + + + + + +
8 27 64 125 216 343 512 729
1 1
+ + +··· (6.19)
1000 1331
7 Ví dụ 6.152 8
\begin{align*}
\begin{autobreak}
\MoveEqLeft
(n_1+n_2+n_3+n_4)^3 =n_1^3+ 3 n_1^2 n_2+ 3 n_1 n_2^2+ n_2^3
+ 3 n_1^2 n_3+ 6 n_1 n_2 n_3+ 3 n_2^2 n_3+ 3 n_1 n_3^2
+ 3 n_2 n_3^2+n_3^3+3 n_1^2 n_4+6 n_1 n_2 n_4+3 n_2^2 n_4
+ 6 n_1 n_3 n_4+ 6 n_2 n_3 n_4+ 3 n_3^2 n_4+ 3 n_1 n_4^2
+ 3 n_2 n_4^2+ 3 n_3 n_4^2+ n_4^3 .
\end{autobreak}
\end{align*}
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
220 Chương 6. Môi trường toán trong LATEX
7 Ví dụ 6.153 8
\begin{align}
\everyafterautobreak{\times}
\begin{autobreak}
\cos\left(\frac{\pi x}{2}\right) =\left(1-x^2\right)
\left(1-\frac{x^2}{9}\right)\left(1-\frac{x^2}{25}\right)
\left(1-\frac{x^2}{49}\right)\left(1-\frac{x^2}{81}\right)
\left(1-\frac{x^2}{121}\right)\left(1-\frac{x^2}{169}\right
)
\dots
\end{autobreak}
\end{align}
: 2
³ πx ´ x2 x2 x2 x2
µ ¶µ ¶µ ¶µ ¶
2
¡ ¢
cos = 1− x 1− 1− 1− 1−
2 9 25 49 81
x2 x2
µ ¶µ ¶
× 1− 1− ... (6.20)
121 169
Trong chế độ toán học, một bảng phải được tạo bằng môi
trường mảng thay vì một bảng, có cùng cách sử dụng với môi
trường bảng, nhưng nội dung của các ô không cần phải được
đặt trong một chế độ toán học riêng biệt. Ví dụ
7 Ví dụ 6.154 8: 2
\[A\to
\begin{array}{|c|c|} \hline a 11 a 12
A→
a_{11} & a_{12}\\ \hline a 21 a 22
a_{21} & a_{22}\\ \hline
\end{array}\]
7 Ví dụ 6.155 8: 2
\[\begin{array}[t]{|ccc|}\
hline α β
1 & 2 & 3\\ γ δ
4 & 5 & 6\\
7 & 8 & 9\\ \hline 1 2 3
\end{array}
4 5 6
\begin{array}[b]{|cc|} \
hline 7 8 9
\alpha & \beta\\
\gamma & \delta\\ \hline
\end{array}\]
7.1. Dòng tiêu đề, trang tiêu đề, đoạn trích . . . . . . . . . . . 224
7.2. Các cấp độ của văn bản chính . . . . . . . . . . . . . . . . . . . 224
7.3. Lỗi cấu trúc đoạn văn . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
7.4. Đầu trang và chân trang . . . . . . . . . . . . . . . . . . . . . . . . 228
7.4.1. Cài đặt cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
7.4.2. Tùy chỉnh đầu trang và chân trang . . . . . . 230
7.4.3. Tùy chỉnh với gói fancyhdr.sty . . . . . . . . . . . 235
7.5. Mục lục . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
7.5.1. Nội dung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
7.5.2. Danh sách các bảng . . . . . . . . . . . . . . . . . . . . . . 240
7.5.3. Danh sách các hình ảnh . . . . . . . . . . . . . . . . . . 240
7.5.4. Danh sách các mã . . . . . . . . . . . . . . . . . . . . . . . . 241
7.5.5. Danh sách các đối tượng nổi của riêng bạn . . . . .
242
7.5.6. Chỉnh sửa kiểu danh sách . . . . . . . . . . . . . . . . 243
7.5.7. Chú thích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
7.6. Môi trường định lý . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
7.6.1. Thiết lập môi trường định lý . . . . . . . . . . . . . 245
223
Các tài liệu có cấu trúc dài hơn thường có cấu trúc như sau:
- Tên tài liệu
- tóm tắt (không có trong lớp sách (book))
- nội dung
- danh sách các đối tượng di động
- cấp độ văn bản chính
+ các phần của tài liệu
+ chương (không thuộc lớp bài báo (article))
+ phần đoạn
+ phần đoạn phụ
+ phần đoạn phụ con
+ đoạn văn
+ đoạn văn con
+ trong mỗi đoạn văn giống như mục
- Phụ lục
- Thư mục
- mục lục
Sử dụng các lệnh sau để nhập tên sách, tác giả và ngày
tháng của tác phẩm.
\title{<Title>}
\author{<author>}
\date {<date>}
\maketitle
Các lệnh \title, \author và \date cũng có thể được viết trong
phần mở đầu, nhưng chỉ \maketitle trong nội dung tài liệu.
Giá trị mặc định cho <date>
\today
có nghĩa là ngày hiện tại tại thời điểm dịch. Chú thích cho các
đối số của các lệnh này cũng có thể được viết một
\thanks{text}
Thứ bậc các cấp trong văn bản chính được tóm tắt trong
bảng sau:
Nếu bạn không muốn một số sê-ri chỉ cho một cấp cho một cấp
được đánh số, hãy sử dụng cái gọi là phiên bản sao (ví dụ: \
section*{<Tiêu đề>}). Trong trường hợp này, tiêu đề không có
trong mục lục hoặc tiêu đề.
Có ba lệnh nữa trong lớp sách về cấu trúc sách: Các trang
được đánh số La mã, các chương không có số thứ tự:
\frontmatter
Trong kiểu chữ Việt Nam, trong trường hợp \frontmatter, việc
đánh số trang được thực hiện bằng các chữ số La Mã lớn, trong
khi bằng tiếng Anh với các chữ số La Mã nhỏ. Để giải quyết vấn
đề này, hãy phát hành \aftermatter sau
\pagenumbering{Roman}.
Một lỗi nghiêm trọng trong bố cục của các tài liệu dài trong
kiểu chữ là cái gọi là dòng lỗi cuối hoặc đầu đoạn. Nó có hai
kiểu xuất hiện,
dòng quả phụ: một trang hoặc cột bắt đầu bằng dòng cuối cùng
của đoạn văn;
dòng mồ côi: một đoạn văn bắt đầu ở dòng cuối cùng của trang
hoặc cột.
Để vô hiệu hóa chúng, hãy sử dụng gói nowidow.sty với tùy
chọn all. Bạn cũng có thể đặt số dòng tối thiểu, nếu có, cho một
đoạn ở đầu hoặc cuối trang hoặc cột. Ví dụ: nếu bạn muốn con
số này là 4, bạn thậm chí có thể sử dụng tùy chọn defaultlines
= 4.
Trong một tài liệu dài hơn, bạn nên tìm một tài liệu tham
khảo trên mỗi trang về phần nào của tài liệu: trên bao nhiêu
trang, ở cấp độ nào và cấp độ bán lại nào. Chúng tự động xuất
hiện trong lớp sách. Trong hai lớp còn lại (article, report), hãy
phát hành yêu cầu:
\pagestyle{headings}
\pagestyle{{plain}
Để thay đổi kiểu trang cho một trang cụ thể, hãy nhập:
\thispagestyle{<style>}
Các lệnh sau có thể được sử dụng để đặt đầu trang và chân
trang:
\thepage
article report/book
một mặt hai mặt một mặt hai mặt
\leftmark section chapter
\rightmark section section chapter section
Nội dung của nó được đặt ở chân trang trên một trang để in
một mặt và trên trang được đánh số lẻ để in hai mặt.
\@evenfoot
Nội dung của nó được đặt ở chân trang để in hai mặt ở mặt
chẵn.
\@oddhead
Nội dung của nó được chèn vào tiêu đề trên một trang để in
một mặt và trên trang được đánh số lẻ để in hai mặt.
\@evenhead
Nội dung của nó được chèn vào tiêu đề khi in trên cả hai mặt.
\ps@<stylename>
\pagestyle{mystyle}
các cài đặt sau áp dụng cho báo cáo hoặc lớp sách:
1. chân trang trống
2. số trang ở lề ngoài của tiêu đề
3. Thông tin chương trong tiêu đề
(a) để chọn một mặt ở lề trong của mỗi mặt
(b) để chọn hai mặt ở mặt chẵn ở lề trong
4. thông tin phần trong tiêu đề
(a) không có sẵn để sử dụng một mặt
(b) để chọn hai mặt ở mặt lẻ ở lề trong.
\makeatletter
\def\ps@sajat{%
\def\chaptermark##1{\markboth{%
\thechapter.~\@chapapp.\enspace##1}{}}
\def\sectionmark##1{\markright{\thesection.\enspace##1}}
\def\@oddfoot{}
\def\@evenfoot{}
\def\@oddhead{\rightmark\hfill\thepage}
\def\@evenhead{\thepage\hfill\leftmark}}
\makeatothe
\makeatletter
\def\sectionmark#1{\markboth{\thesection.\enspace#1}{}}
\def\subsectionmark#1{\markright{\thesubsection.\enspace#1}
}
\def\@oddfoot{}
\def\@evenfoot{}
\def\@oddhead{\rightmark\hfill\thepage}
\def\@evenhead{\thepage\hfill\leftmark}
\makeatother
\def\@evenfoot{}
\def\@oddhead{\hfill\thepage}
\def\@evenhead{\thepage\hfill}
\def\ps@plain{}
\makeatother
Trong các ví dụ cho đến nay, bạn có thể muốn chỉ định
phông chữ cho số trang và thông tin cấp. Ví dụ: bạn có thể nhập
{\normalsize \normalfont \thepage} thay vì \thepage hoặc {\
footnotesize \sffamily \leftmark} thay vì \leftmark.
Theo mặc định, đánh số trang bằng chữ số Ả Rập. Bạn có
thể di chuyển nó bằng các lệnh sau:
\pagenumbering{arabic} Đánh số Ả Rập.
\pagenumbering {roman} Chữ số La mã nhỏ.
\pagenumbering{Roman} Chữ số La Mã lớn.
\pagenumbering{alpha} Chúng được đánh số bằng chữ thường
của bảng chữ cái tiếng Anh.
\pagenumbering{Alpha} Chúng được đánh số bằng chữ in hoa
của bảng chữ cái tiếng Anh.
Những điều này không chỉ thay đổi kiểu đánh số trang mà còn
đặt lại giá trị của nó thành 1. Nếu bạn không muốn đánh số
trang, hãy nhập lệnh sau:
\pagenumbering{gobble}
Trong những trường hợp như vậy, nội dung của \leftmark
và \rightmark phải được xác định lại bằng các lệnh \markboth và
\markright tương ứng. Ví dụ: trong trường hợp trước đây, nếu
bạn không muốn thông tin cấp trong chương chưa được đánh
số, hãy nhập \markboth{}{} sau \chapter*{Tiêu đề chương chưa
được đánh số}.
article report/book Ví dụ
\leftmark section chapter Chương 7. Tài liệu có cấu trúc
\rightmark section section 7.4. Đầu trang và chân trang
Gói này có phong cách riêng của nó được gọi là fancy. Hiệu quả
là:
4 chân trang ở giữa số trang
4 thông tin cấp trong tiêu đề
Các giá trị <địa điểm> có thể có cho vị trí: L, C, R, LE, CE, RE,
LO, CO, RO. (Mặc định: LCR.) Ý nghĩa chữ cái: L = trường bên
trái, C = trường trung tâm, R = trường bên phải, E = trang
chẵn, O = trang lẻ. Vì vậy, ví dụ, LE có nghĩa là trường bên
trái trên các trang chẵn.
Vấn đề trước mỗi tùy chỉnh
\fancyhf{}
lệnh xóa cài đặt đầu trang và chân trang đã xác định trước đó.
Có thể tách văn bản chính bằng một dòng, cái gọi là với một
dòng, từ đầu trang và chân trang. Bạn có thể điều chỉnh độ
dày của các đường này bằng các lệnh sau:
\refreshcommand{\headrulewidth}{<thickness>}
Độ dày của dòng dưới tiêu đề. Giá trị mặc định là 0,4pt.
\refreshcommand{\footrulewidth}{<thickness>}
Độ dày của dòng phía trên chân trang. Giá trị mặc định là 0pt.
Bạn có thể xác định lại kiểu hiện có hoặc tạo kiểu mới bằng
lệnh sau:
\fancypagestyle{<stylename>}{<style>}
Nếu bạn nhập mã sau vào nội dung tài liệu, các cài đặt sau sẽ
áp dụng cho nạp hai mặt:
4 Không có dòng
4 chân trang trống
Nếu bạn nhập mã sau vào nội dung của tài liệu, tiêu đề
sẽ trống để chọn hai mặt và đánh số trang sẽ ở lề ngoài của
chân trang. Khi chúng ta đến trang bắt đầu của chương, các
lớp report và book chuyển sang kiểu plain, do đó, số trang được
căn giữa, điều này có thể gây nhầm lẫn với cài đặt này. Lệnh
\fancypagestyle{plain}{}có thể được sử dụng để tắt kiểu plain.
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[LE,RO]{\normalfont\normalsize\thepage}
\renewcommand{\headrulewidth}{0pt}
\fancypagestyle{plain}{}
hoặc
\fancypagestyle{mystyle}{
\fancyhf{}
\fancyfoot[C]{\normalfont\normalsize\thepage/\pageref{
LastPage}}
\renewcommand{\headrulewidth}{0pt}
\fancypagestyle{plain}{}}
Tại điểm trong tài liệu mà bạn muốn mục lục xuất hiện,
đưa ra yêu cầu.
\tableofcontents
Ví dụ: nếu bạn muốn thay đổi tiêu đề thành "Nội dung", hãy
nhập trước tiêu đề tiếp theo:
\def\contentname{Mục lục}
Khi biên dịch, các tiêu đề cấp và số trang tương ứng được ghi
vào tệp có phần mở rộng toc (mục lục) (tên và thư mục giống
với tệp nguồn). Vào cuối bản dịch, tệp này thực sự hiển thị mục
lục.
Độ sâu của mục lục, tức là cấp độ của tiêu đề xuất hiện
trong mục lục, được bao gồm trong bộ đếm tocdepth. Di chuyển
v.d. 4:
\setcounter{tocdepth}{4}
Các đầu sách có số cấp từ 4 trở xuống sẽ xuất hiện trong mục
lục.
Khi bạn sử dụng phiên bản sao của lệnh mở cấp, tiêu đề
này sẽ không được đánh số, nó sẽ không có trong tiêu đề và
mục lục. Để vẫn được đưa vào mục lục cùng với số trang, hãy
nhập dòng sau vào lệnh mở cấp:
\addcontentsline{toc}{<level>}{<Nội dung>}
Ví dụ
\section*{Lời nói đầu}
\addcontentsline{toc}{section}{Lời nói đầu}
Nếu bạn sử dụng gói hyperref.sty, nếu bạn ghi vào mục lục
bằng lệnh \addcontentsline, liên kết số trang sẽ không hoạt
động. Cải tiến của điều này là \addcontentsline cũng phải được
đặt trước lệnh \phantomsection (trong hyperref.sty).
Chú thích và lệnh không có số trang cũng có thể được hiển
thị trong mục lục tại bằng lệnh
\addtocontents{toc}{<text>}
Nếu có một lệnh trong <text> mà bạn muốn nhập vào tệp toc
mà không cần giải thích, hãy đặt lệnh \protect trước lệnh đó.
Ví dụ
\addtocontents{toc}{\protect\vspace*{10pt}}
Vị trí lệnh \addtocontents sẽ có hiệu lực trong mục lục phụ
thuộc vào nơi nó được phát hành trong tệp nguồn.
Theo mặc định, các bảng (mục lục, bảng và số liệu, thư
mục) và chỉ mục tên và chủ đề không xuất hiện trong mục lục.
Nếu bạn vẫn cần, gói tocbibind sẽ hiển thị tất cả những điều
này. Nó có thể hoạt động với các lớp tài liệu sau: book, report,
article, proc, ltxdoc. Các tùy chọn có thể có:
notbib Thư mục không xuất hiện trong mục lục.
notindex Chỉ mục không xuất hiện trong mục lục.
nottoc Mục lục không xuất hiện trong mục lục.
notlot Danh sách các bảng không xuất hiện trong mục lục.
notlof Danh sách các số liệu không xuất hiện trong mục lục.
numbib Thư mục được đánh số tiêu đề.
numindex Chỉ mục được đánh số tiêu đề.
Bạn cũng có thể tạo danh sách tiêu đề bảng hiển thị số
bảng, tiêu đề và số trang. Để làm điều này, hãy nhập
\listoftables
yêu cầu. Ví dụ: nếu bạn muốn thay đổi tiêu đề thành "Danh
sách Bảng", hãy thêm nội dung sau:
\def\listtablename{Danh sách bảng}
Khi biên dịch, lệnh \caption được viết trong môi trường bảng,
hoặc tùy chọn \captionof{table} được viết ở bất kỳ đâu, hoặc
đối số của nó, được ghi với số trang hiện tại vào một tệp có
nhiều phần mở rộng (danh sách bảng) (tên của nó và thư mục
giống với tệp nguồn). Vào cuối bản dịch, tệp này thực sự hiển
thị một danh sách các bảng.
Để thêm văn bản có số trang vào danh sách bảng, hãy sử
dụng lệnh sau:
\addcontentsline{lot}{table}{<text>}
Thông tin không có số trang cũng có thể được ghi vào danh
sách tại
\addtocontents{lot}{<text>\par}
Để tạo danh sách các số liệu, hãy nhập một vào phần thích
hợp của tài liệu yêu cầu
\listoffigures
Ví dụ: nếu bạn muốn thay đổi tiêu đề thành "Danh sách hình",
hãy thêm nội dung sau:
Khi biên dịch, lệnh \caption trong môi trường figure hoặc tùy
chọn \captionof{figure} ở bất kỳ vị trí nào hoặc khi không có,
đối số của nó được ghi với số trang hiện tại vào tệp có phần mở
rộng lof (danh sách các hình) (tên và thư mục của nó giống với
tệp nguồn). Ở cuối bản dịch, tệp này thực sự hiển thị một danh
sách các số liệu.
Để thêm văn bản có số trang vào danh sách hình, hãy sử
dụng lệnh sau:
\addcontentsline{lof}{figure}{<text>}
Thông tin không có số trang cũng có thể được hiển thị trong
danh sách
\addtocontents{lof}{<text>\par}
Khi dịch, tiêu đề của các mã được đánh số được hiển thị cùng
với số trang hiện tại một tệp *.lol (danh sách các lệnh) với tên
và thư mục với tệp nguồn của nó trận đấu). Vào cuối bản dịch,
việc sử dụng tệp này sẽ thực sự hiển thị danh sách các mã.
Nếu bạn muốn thêm văn bản có số trang vào danh sách mã,
hãy sử dụng cách sau yêu cầu:
\addcontentsline{lol}{lstlisting}{<text>}
Thông tin không có số trang cũng có thể được ghi vào danh
sách bằng lệnh
\addtocontents{lol}{<text>\par}
7.5.5 Danh sách các đối tượng nổi của riêng bạn
Trước đây, chúng ta đã thấy rằng với gói phụ đề, chúng ta
cũng có thể tạo môi trường nổi của riêng mình. Bạn cũng có
thể tạo một danh sách các đối tượng được thả nổi với một môi
trường như vậy bằng lệnh
\listof<enosystem>
Khi biên dịch, tùy chọn \caption hoặc \captionof được viết
trong môi trường <enosystem> hoặc, trong trường hợp không
có, đối số với số trang hiện tại sẽ được ghi vào một tệp có danh
sách mở rộng môi trường (danh sách <enosystem>) (tên và thư
mục của nó). tương ứng với kho nguồn). Vào cuối bản dịch, tệp
này thực sự được hiển thị bằng cách sử dụng tệp này. Để thêm
văn bản có số trang vào danh sách các đối tượng nổi, hãy sử
dụng lệnh sau:
\addcontentsline{lo<enosystem>}{<enosystem>}{<text>}
Thông tin không có số trang cũng có thể được hiển thị trong
danh sách bằng lệnh
\addtocontents{lo<enosystem>}{<text>\par}
Bạn cũng có thể tạo phong cách của riêng mình bằng đoạn
mã sau.
\makeatletter
\def \l@<stylename>{<found style>\@dottedtocline{<level
number>}} {<indent1>}{<indent2>}}
\makeatother
Ví dụ
\makeatletter
\def\l@my{\large\@dottedtocline{1}{2em}{3em}}
\makeatother
mã được sử dụng để xác định một kiểu được gọi là bản thân
cấp 1. Sau đó
\addcontentsline{toc}{my}{<text>}
làm cho <text> xuất hiện trong mục lục (kích thước lớn) nếu
giá trị tocdepth không nhỏ hơn 1. "Địa chỉ" bắt đầu bằng thụt
lề 2em. Nếu tiêu đề dài đến mức cần ngắt dòng, dòng thứ hai và
các dòng tiếp theo bắt đầu bằng khoảng thụt lề 3em so với dòng
đầu tiên. Phần cuối của tiêu đề và số trang được nối với nhau
bằng một loạt dấu chấm.
Nếu bạn không muốn có một đường chấm giữa cuối tiêu đề
và số trang, thì mã phức tạp hơn. Để thực hiện việc này, trước
tiên bạn phải xác định lệnh \@nodottedtocline được mô hình
hóa trên lệnh \@dottedtocline:
\makeatletter
\def\@nodottedtocline#1#2#3#4#5{%
Sau đó
\makeatletter
\def\l@<stylename>{<found style>\@nodottedtocline{intslevel
number}}{<indent1>} {<indent2>}}
\makeatother
Thay vì chú thích cuối trang, có thể cũng tạo các chú thích
cuối không xuất hiện ở cuối mỗi trang, nhưng trên một trang
riêng biệt mà chúng ta chỉ định, chẳng hạn như ở cuối mỗi
chương. Để thực hiện việc này, hãy sử dụng thay vì lệnh \
footnote
\endnote{<text>} (trong endnotes.sty).
Thông thường có thể cần phải viết các đoạn văn yêu cầu
tiêu đề loại hoặc số sê-ri. Ví dụ là các định lý, chứng minh,
định nghĩa trong toán học hoặc các đoạn văn trong Quy tắc,
v.v. Những cái gọi là các đoạn văn giống như mục mà bạn có
thể tạo với các môi trường được xác định bằng lệnh \newtheorem
.
\newtheorem {<tên môi trường>} {<tên tiêu đề>}
\newtheorem {<tên môi trường>} {<tên tiêu đề>} [<đếm theo
khung>]
\newtheorem {<tên môi trường>} [<đếm chung>] {<tên tiêu đề>
}
<tên môi trường> Tên môi trường và bộ đếm tên mặt hàng
được tăng lên mỗi khi bạn mở một môi trường như vậy.
<tên tiêu đề> Đây sẽ là tiêu đề loại của đoạn văn giống như
mục (định nghĩa, nhận xét, v.v.). Ngoài địa chỉ này, giá
trị hiện tại của bộ đếm <tên tiêu đề> cũng được hiển thị.
<đếm theo khung> Một bộ đếm đã được xác định, thường là bộ
đếm của một trong các mức (chapter, section, v.v.). Khi
điều này được thay đổi, bộ đếm có tên theo khung như
chapter, section,... sẽ được đặt lại. Bộ đếm và <đếm theo
khung> xuất hiện cùng nhau (ví dụ: mục 2.1).
<đếm chung> Tên của một môi trường giống môi trường<đếm
chung>. Bộ đếm cho môi trường trước và <đếm chung> sẽ
tăng cùng nhau.
Đây là cách sử dụng môi trường giống vật phẩm mà bạn đã
tạo:
\begin{<tên môi trường>}[Địa chỉ duy nhất]
<Văn bản>
\end{<tên môi trường>}
Nếu "địa chỉ duy nhất" được chỉ định, nó sẽ xuất hiện trong
dấu ngoặc đơn sau "địa chỉ mặt hàng". Tham chiếu có thể được
thực hiện đối với các đoạn văn được chia thành từng mục phù
hợp với mô tả chung. Ví dụ
7 Ví dụ 7.4 8
\newtheorem{dli}{Định lý}
\begin {dli}
Văn bản của định lý.
\end {dli}
\begin {dli}[Cauchy]\label{cauchy}
Văn bản của mục tiếp theo.
\end{dli}
Định lý~\ref{cauchy}.~từ mục \dots
: 2
Định lý 1. Văn bản của định lý.
Định lý 2. từ mục . . .
Dùng số đếm của mục này định nghĩa
7 Ví dụ 7.5 8
\newtheorem {dly}{Định lý}[section]
\newtheorem {dn}[dly]{Định nghĩa}
\begin{dly}
Văn bản của định lý.
\end{dly}
\begin{dn}
Văn bản của định nghĩa.
\end {dn}
: 2
Định lý 7.6.1. Văn bản của định lý.
Từ các ví dụ cho đến nay, bạn có thể thấy rằng trong các
đoạn văn giống như mục, tiêu đề được in đậm và văn bản được
in nghiêng. Bạn có thể tự đặt kiểu cho các đoạn văn giống như
mục bằng gói theorem hoặc amsthm. Chúng ta chỉ giải quyết gói
amsthm bây giờ. Khi sử dụng điều này, hãy đảm bảo rằng nó
được tải sau các gói amsmath hoặc mathtools. Bạn có thể đặt
kiểu bằng lệnh sau:
\theoremstyle{<stylename>} (trong amsthm.sty)
7 Ví dụ 7.6 8
\newtheoremstyle{myth}{3ex}{3ex}{\slshape}{0pt}{\slshape\
bfseries}{.}
{2ex}{\thmnumber{#2}\thmname{. #1}\thmnote{ (#3)}}
\theoremstyle{myth}
\newtheorem{dinhly}{Định lý}
\begin{dinhly}[Cauchy]
Nội dung định lý
\end{dinhly}
: 2
1. Định lý (Cauchy). Nội dung định lý
Nếu bạn không muốn đánh số cho một môi trường giống
như mục, hãy sử dụng như sau:
\newtheorem*{<tên môi trường>}}{<tên tiêu đề>}}(trong
amsthm.sty)
7 Ví dụ 7.7 8
\newtheorem{din}{Định lý}[section]
\theoremstyle{definition}
\newtheorem{dnghia}[din]{Định nghĩa}
\theoremstyle{remark}
\newtheorem*{binhluan}{Bình luận}
\begin{din}
Văn bản của định lý.
\end{din}
\begin{dnghia}
Văn bản của định nghĩa.
\end{dnghia}
\begin{binhluan}
7 Ví dụ 7.8 8
\begin {proof}[Chứng minh]
Văn bản của chứng minh.
\end{proof}
: 2
Chứng minh. Văn bản của chứng minh.
Cái gọi là Q.E.D. dấu hiệu, là bản biểu diễn quod erat trong
tiếng Latinh (đã được chứng minh) viết tắt của thuật ngữ. Một
Q.E.D. một chữ viết tắt thường được thêm vào cuối các dẫn
xuất toán học. Ngày nay nó ít được sử dụng hơn, thay vào đó
được ký hiệu bằng □ hoặc ■, bằng tiếng Anh trong khu vực
ngôn ngữ, nó còn được gọi là bia mộ hoặc bia mộ sau Pál Hal-
mos, người đã giới thiệu việc sử dụng nó với iff (sau đó và chỉ
sau đó) vào những năm 1950. Một Q.E.D. Ví dụ: bạn có thể xác
định lại ký hiệu thành ■ như sau:
\renewcommand{\qedsymbol}{$\blacksquare$}
Nếu bạn không muốn đánh dấu Q.E.D., nhập thông tin sau:
\refreshcommand {\qedsymbol}{}
Nếu chứng minh kết thúc bằng một công thức toán học được
đánh dấu, nó sẽ được đặt ở dòng sau công thức và Q.E.D. dấu
hiệu đó là xấu:
7 Ví dụ 7.9 8
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
250 Chương 7. Tài liệu có cấu trúc
\begin{proof}
...
\[e^{i\pi}+1\]
\end{proof}
: 2
Chứng minh. ...
e iπ + 1
Tất nhiên, giải pháp này không cho kết quả tốt nếu công
thức được đánh số từ bên phải. Trong trường hợp này, hãy
chắc chắn kết thúc bằng chứng bằng văn bản. Nếu phần tử
cuối cùng của chứng minh là một công thức nhiều dòng, chẳng
hạn như với môi trường align*, hãy nhập \qedhere sau dòng
công thức cuối cùng. Ví dụ
7 Ví dụ 7.11 8: 2
\begin{proof}
Chứng minh. ...
...
\begin{align*} a = 2,
a&=2,\\ b = 3.
b&=3.\qedhere
\end{align*}
\end{proof}
7 Ví dụ 7.13 8
\begin{dli} \label {xy}
Văn bản của định lý.
\end {dli}
7 Ví dụ 7.14 8
\makeatletter
\renewenvironment{proof}[1][\proofname]{\par
\pushQED{\qed}%
\normalfont \topsep6\p@\@plus6\p@\relax
\trivlist
\item[\hskip\labelsep
\bfseries % kiểu in đậm được đặt ở đây
#1\@addpunct{.}]\ignorespaces}
{\popQED\endtrivlist\@endpefalse}
\makeatother
\begin {proof}[Chứng minh]
Văn bản của chứng minh.
\end{proof}
: 2
Chứng minh. Văn bản của chứng minh.
Bạn không thể xác định lại các môi trường giống như mục
đã được xác định bằng lệnh \newtheorem trừ khi bạn thực hiện
trước các lệnh sau:
\let\<tên môi trương định lý>\relax
\let\end<tên môi trương định lý>\relax
Việc đóng một môi trường giống như một mục sẽ mở ra một
đoạn mới, bất kể bạn có chèn một dòng trống vào sau nó hay
không. Bạn có thể ghi đè hiệu ứng này bằng đoạn mã sau:
\makeatletter
Nếu bạn muốn đóng một môi trường giống với một ký hiệu
cụ thể, như trong trường hợp chứng minh, ký hiệu Q.E.D., bạn
có thể làm điều này bằng cách sử dụng ví dụ sau. Tải gói amsthm
.sty và viết như sau trong phần mở đầu:
\newtheorem{mde}{Mệnh đề}
\let\oldmde\mde
\let\endoldmde\endmde
\renewenvironment{mde}[1][]{%
\begin{oldmde}[#1]\pushQED{\qed}}
{\def\qedsymbol{$\bigcirc$}\popQED\end{oldmde}}
Điều này xác định một môi trường mde luôn kết thúc bằng
⃝ ($\bigcirc$). Điều này không xác định lại Q.E.D. ở cuối môi
trường chứng minh. Vì vậy, sau đó
7 Ví dụ 7.15 8
\begin{mde}
Văn bản của mệnh đề.
\end{mde}
\begin{proof}
Văn bản của chứng minh.
\end{proof}
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
254 Chương 7. Tài liệu có cấu trúc
Tiêu đề của "Tài liệu tham khảo" trong lớp article, được
lưu trữ bằng lệnh \refname. "Tài liệu tham khảo" trong lớp
report và book, được lưu trữ bằng lệnh \bibname. Ví dụ: định
nghĩa lại chúng thành "Văn học":
\refreshcommand{\refname}{Tài liệu chính}
\refreshcommand{\bibname}{Tài liệu chính}
Việc xác định lại phải được thực hiện trong phần thân tài
liệu, nếu không nó sẽ bị magyar.ldf ghi đè.
<vidụ định dạng> Là thẻ rộng nhất trong số các thẻ phần tử
thư mục.
<label> Chỉ định văn bản để xác định phần tử thư mục.
Nếu bạn bỏ nó, nhãn sẽ là một số sê-ri tự động.
<key> Đối với phần tử thư mục
\cite[<text>]{<key>}
có thể được tham chiếu trong tài liệu. Trong trường hợp
này, nhãn của mặt hàng sẽ xuất hiện tại điểm giữa các dấu
[ ]. Bạn có thể nhập nhiều khóa cùng một lúc, được phân tách
bằng dấu phẩy. Ví dụ: trong <text>, bạn có thể chỉ định trang
nào bạn đang đề cập đến.
Trong một tài liệu tiếng Việt, nó cũng có thể đặt một tính
từ tự động trước các liên kết
\cite[<text>]{<key>}
\cite[<text>]{<key>}
7 Ví dụ 7.17 8
Xem \cite{tuandien} và \cite[trang 134.~oldal]{dien}\dots
Xem \cite{tuandien,dien}\dots
Xem \cite{tuandien, dien} trong sách
\begin{thebibliography}{tuandien 2000}
\bibitem[tuandien 2000]{tuandien} Nguyễn Hữu Điển và Nguyễn
Minh Tuấn,
\textit{LaTeX và Soạn thảo}, 2000, NXB ĐHQG Hà Nội.
\bibitem[dien 2004]{dien} Nguyễn Hữu Điển,
\textit{LaTeX với gói lệnh và phần mềm công cụ}, 2004, NXB
ĐHQG Hà Nội.
\end{thebibliography}
: 2
Xem [tuandien 2000] và [dien 2004, trang 134. oldal]
. . . Xem [tuandien 2000, dien 2004] . . . Xem [tuandien 2000,
dien 2004] trong sách
TÀI LIỆU THAM KHẢO
[tuandien 2000] Nguyễn Hữu Điển và Nguyễn Minh Tuấn,
LaTeX và Soạn thảo, 2000, NXB ĐHQG Hà
Nội.
[dien 2004] Nguyễn Hữu Điển, LaTeX với gói lệnh và
phần mềm
công cụ, 2004, NXB ĐHQG Hà Nội.
Với gói natbib, bạn cũng có thể tạo một thư mục không có
nhãn. Nếu bạn sử dụng gói này, lệnh \cite không hoạt động
đúng với một tính từ tự động. Thay vì mô tả chung về gói,
chúng ta chỉ đưa ra một ví dụ về việc sử dụng nó. Viết những
điều sau trong phần mở đầu:
\usepackage{natbib}
\setcitestyle{aysep={},citesep={,},open={},close={}}
\setlength{\bibsep}{0pt}
Sau đó, nhập nội dung sau vào nội dung tài liệu:
7 Ví dụ 7.18 8
Xem \cite{tuandien} và \cite[trang 134.~oldal]{dien}\dots
Xem \cite{tuandien,dien}\dots
Xem \cite{tuandien, dien} trong sách
\begin{thebibliography}{}
\bibitem[tuandien 2000]{tuandien} Nguyễn Hữu Điển và Nguyễn
Minh Tuấn, \textit{LaTeX và Soạn thảo}, 2000, NXB ĐHQG
Hà Nội.
tudio.
Cấu trúc của tệp bib. Nội dung của tệp cái yếm bao gồm
các loại phần tử và tên trường. Một loại mục xác định xem mục
đó là một bài báo hay sách hay một cái gì đó khác. Tên trường
chỉ định dữ liệu (tác giả, tiêu đề, v.v.) của mục. Cấu trúc của
nó như sau:
@ <kiểu tài liệu>{<key>,
<tên trường> = {<text>},
<tên trường> = {<text>},
<tên trường> = {<text>},
...
}
có thể được tham chiếu với lệnh. Có các tùy chọn khác cho điều
này trong gói biblatex, mà chúng ta sẽ đề cập sau. Có rất nhiều
<kiểu tài liệu> và <tên trường>, đây chỉ là một số:
Các loại tài liệu. Mô tả các loại mục trong bảng trước:
Và chỉ cần liệt kê nhiều tên và những tên khác chỉ khi
không liệt kê tất cả các tên. Ví dụ
author = {Nguyễn Hữu Điển và Nguyễn Minh Tuấn},
Chúng ta sẽ thấy ở phần sau rằng có một tùy chọn để
viết tắt tên đầu tiên. Đó là, ví dụ, “Nguyễn Hữu Điển và
Nguyễn Minh Tuấn” được thay thế bằng “N. H. Điển” nên
là đầu ra. Đây có thể là một vấn đề đối với tên Việt nam,
vì đây là trường hợp, chẳng hạn
author = {Nguyễn Hữu Điển và Nguyễn Minh Tuấn},
đầu ra “N. H. Điển và N. M. Tuấn”. Sau đó, sử dụng đầu
vào tiếp theo định dạng:
given={<firstname>},
given-i={< short of firstname>},
family={<family name>}
Ví dụ
author = {given = {Nguyễn}, given-i = {N.H.}, family =
{Điển} và Nguyễn Minh Tuấn},
Ngày đầu tiên là bắt đầu của hội nghị và ngày thứ hai là
kết thúc. Ví dụ
eventdate = {2018-09-30 / 2018-10-04},
isbn ISBN của sách hoặc tập sách hội nghị. Ví dụ
isbn = {978-615-5621-72-7},
issn số ISSN của tập san hoặc hội nghị. Ví dụ
issn = {1787-5021},
journaltitle Tên của tạp chí có bài báo được trích dẫn. Ví dụ
journaltitle = {Annales Mathematicae et Informaticae},
langid Để có thư mục đa ngôn ngữ với tùy chọn autolang =
gạch nối trong gói biblatex luôn sử dụng cách tách từ
theo quy tắc của ngôn ngữ đã định. Nếu, ví dụ gói babel
được tải với tùy chọn Hungary và một trong các phần tử
trong tệp bib là tiếng Anh nhập ngôn ngữ sau:
langid = {Vietnamese},
location Nơi xuất bản cuốn sách. Ví dụ
location = {Hanoi},
number Số của tạp chí.
options Bạn cũng có thể thêm tùy chọn cho từng mục với tên
trường này. Chúng ta sẽ xem về điều đó sau, sau đó là
một ví dụ.
organization Đối với một khối lượng hội nghị, tên của người
Ví dụ
pages = {135-150},
publishe Tên nhà xuất bản của cuốn sách. Ví dụ
publishe = {Springer},
sortname biber không chỉ là người Anh, mà còn là danh sách
của Việt Nam. Ví dụ
author = {Nguyễn Hữu Điển},
sortname = {N.H.Điển},
title Tên tác phẩm. Ví dụ
title={Baum--Katz Type Theorems with Exact Threshold},
Trong một số trường hợp, biblatex có thể viết hoa chữ cái
đầu tiên trong tiêu đề và phần còn lại viết thường. Trong
trường hợp này, ví dụ: chuyển đổi tiêu đề “Định lý loại
Baum - Katz với Ngưỡng chính xác” thành “Định lý loại
Baum - katz với ngưỡng chính xác”. Ví dụ: nếu bạn muốn
ngăn chặn điều này đối với tên, hãy đặt từ bạn muốn bảo
vệ khỏi việc thay đổi các chữ cái trong dấu ngoặc đơn.
Đặt không chỉ chữ cái đã cho, mà cả từ trong ngoặc đơn,
nếu không khoảng cách xung quanh các chữ cái sẽ không
chính xác. Ví dụ
title = {{Baum--Katz} Type Theorems with Exact
Threshold},
hay
title = {{$p$-adic} Logarithmic Forms and Group
Varieties {II}},
Tương tự, đặt các lệnh trong tiêu đề trong dấu ngoặc đơn:
title = {{\TeX book}},
url Địa chỉ web của tác phẩm. Ví dụ
url = {http://tug.org/texinfohtml/latex2e.html},
urldate Ngày của địa chỉ web tại thời điểm liên kết được xác
định như sau:
urldate = {year-month-day-day},
Ví dụ
urldate = {2009-01-31},
version bản Phiên bản của nguồn trực tuyến.
volume Số tập của tác phẩm.
Các loại tên trường. Các tên trường cũng được chia thành
ba nhóm:
gõ tên trường
Loại Tên trường
Danh sách tên author, editor
Danh sách tổ chức organization, publisher
Trường booktitle, date, doi, eventdate, isbn,
issn, journaltitle, location, number,
pages, title, url, urldate, version, vol-
ume,
Ví dụ về tệp bib.
Viết nội dung sau vào tệp reference.bib được mã hóa UTF-
8. Mục menu TeXstudio Bibliography được hỗ trợ rất nhiều.
@book{Knuth2001,
author={Donald Ervin Knuth},
title={Deformation modelling tracking animation and
applications},
date={2001},
publisher={Springer},
location={Berlin, Heidelberg},
}
@article{BalkaTomacs2018,
author={Richárd Balka and Tibor Tómács},
title={{Baum--Katz} type theorems with exact threshold},
journaltitle={Stochastics},
volume={90},
number={4},
date={2018},
pages={473-503},
publisher={Taylor \& Francis},
doi={10.1080/17442508.2017.1366490},
}
Hiển thị thư mục. Tệp tex. Chứa thư mục. Sau khi tải gói
biblatex, hãy viết
\addbibresource{<bib filename>}
và sau đó trong phần nội dung của tài liệu đến vị trí mà thư
mục xuất hiện
\printbibliography[<options>]
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{biblatex}
\addbibresource{references.bib}
\begin{document}
See \cite[p.~56]{Knuth2001} \dots see \cite{BalkaTomacs2018
}
\printbibliography
\end{document}
Đặt tệp này và tệp reference.bib trước đó vào cùng một thư
mục.
Tạo kết quả cuối cùng. Trong ví dụ trước, bạn có thể tạo
phát hành các lệnh sau tại dấu nhắc lệnh:
pdflatex hoctap.tex
biber hoctap
pdflatex hoctap.tex
pdflatex hoctap.tex
Tin nhắn từ gói biblatex. Nếu bạn biên dịch tệp hoctap
.tex đã tạo trước đó, bạn sẽ được cảnh báo rằng nếu bạn sử
dụng gói babel và biblatex cùng nhau, bạn cũng sẽ cần tải gói
csquotes. Điều này là do các tiêu đề sẽ xuất hiện trong dấu
ngoặc kép, mà bạn điều chỉnh cho phù hợp với ngôn ngữ cụ thể
với gói csquotes. Dấu ngoặc kép tiếng Việt Nam này đã được
biết đến từ tháng 5 năm 2019 (v5.2e), vì vậy nếu bạn đang sử
dụng phiên bản cũ hơn, sau khi tải gói csquotes, hãy nhập nội
dung sau vào phần mở đầu:
\DeclareQuoteStyle{english}{,,}{’’}{>>}{<<}
Đối với tài liệu bằng tiếng Việt, chúng ta sẽ nhận được một
thông báo khác: Đã tải mô-đun bản địa hóa tiếng Việt cho
biblatex. Nếu bạn muốn tắt tính năng này, hãy phát hành
\BiblatexVietnamWarningOff
Tùy chọn gói biblatex.sty. Nếu không muốn nói đầy đủ,
chúng ta liệt kê gói biblatex một số tùy chọn:
style = <stylename> Điều này cho phép bạn chỉ định kiểu của
thư mục và trích dẫn. Có rất nhiều tên biểu tượng <
stylename>, đây chỉ là một số:
numeric Đây là kiểu cơ bản. Các phần tử thư mục và tài
liệu tham khảo được đánh số.
alphabetic Nhãn cho các yếu tố thư mục là chữ viết tắt
dựa trên tác giả và năm.
authoryear Thư mục không được gắn thẻ. Tài liệu tham
khảo dựa trên tác giả và năm.
Mỗi kiểu chuẩn cũng có một phiên bản mở rộng, có
thể được truy cập bằng tiền tố ext ở phía trước tên:
ext-numeric , ext-alphabetic , ext-authoryear, v.v.
maxnames = <number> Nếu phần tử thư mục có nhiều hơn <
number>, chỉ liệt kê số lượng tác giả được chỉ định bởi tùy
chọn minnames, sau đó in “và những người khác” hoặc viết
tắt “và tsai”. Giá trị mặc định cho number> là 3.
minnames = <number> Xem tên max. Giá trị mặc định cho <
number> là 1.
giveninits Tên của các tác giả được viết tắt. Ví dụ, D. E.
Knuth thay thế Donald Ervin Knuth.
abbreviate= false Các nội dung tự động được đưa vào thư mục
sẽ không được viết tắt (“và những người khác” thay vì “và
sai”, “Thư mục” thay vì “Văn học”, v.v.).
autolang = hyphen Đối với thư mục đa ngôn ngữ, tùy chọn này
luôn sử dụng tính năng tách từ theo quy tắc của ngôn
ngữ được chỉ định. Nếu gói babel được tải bằng tùy chọn
vietnam và một trong các mục trong tệp bib bằng tiếng
Anh, hãy nhập như sau:
langid = {english}, Ví dụ
@book{Knuth2001,
langid={english},
author={Donald Ervin Knuth},
title={Deformation modelling tracking animation and
applications},
date={2001},
publisher={Springer},
address={Berlin, Heidelberg},
}
Điều này xác định khoảng cách giữa thẻ và phần tử thư mục.
Giá trị mặc định là \labelsep hai lần. Để thay đổi nó thành
\labelsep, hãy sử dụng lệnh sau:
\setlength {\biblabelsep} {\labelsep}
\bibfont
Điều này chỉ định loại phông chữ của thư mục. Ví dụ: bạn có
thể thay đổi kích thước thành \small như sau:
\refreshcommand {\bibfont} {\normalfont \small}
\mkbibnamefamily
Điều này chỉ định loại phông chữ của họ. Ví dụ: bạn có thể
chuyển sang vốn chủ sở hữu nhỏ như sau:
\refreshcommand {\mkbibnamefamily} {\scshape}
\mkbibnamegiven
Điều này chỉ định loại phông chữ của tên. Ví dụ: bạn có thể
chuyển sang vốn chủ sở hữu nhỏ như sau:
Đối với lệnh trước đó, dấu được lưu trữ bởi lệnh này được chèn
vào giữa họ và tên. Mặc định là dấu phẩy. Nếu tác giả của tài
liệu và các yếu tố thư mục là người Hungary, bạn nên chuyển
mục này thành trống bằng cách sử dụng lệnh trước:
\DeclareNameAlias{author}{family-given}
\renecommand{\revsdnamepunct}{}
Điều này tạo ra một tùy chọn được gọi là hunname của một
kiểu logic với giá trị mặc định là true. Kết quả của tùy chọn
này, tên của các tác giả được đặt trong trường nhất định được
hiển thị theo thứ tự của họ mà không có bất kỳ dấu hiệu nào
giữa chúng. Tùy chọn có thể được chỉ định trong tệp yếm như
sau:
options = {hunname},
Nếu nhiều tùy chọn được sử dụng, chúng phải được phân
tách bằng dấu phẩy. Ví dụ trước nên được sử dụng khi tài liệu
là tiếng Việt Nam, nhưng thư mục chứa tiếng Việt Nam và ví
dụ: cũng là một tác giả người Nga. Trong trường hợp này, bằng
cách nhập tùy chọn trước cho tác phẩm của tác giả Việt Nam,
họ sẽ xuất hiện theo thứ tự tốt. Ví dụ
@book{KolmogorovFomin1981,
author = {Andrei Nikolayevich Kolmogorov và
Sergei Vasilyevich Fomin},
title = {Các yếu tố của Lý thuyết Hàm và Phân tích Chức nă
ng},
publisher= {Nhà xuất bản kỹ thuật},
location = {Hà Nội},
date = {1981},
}
@book {nhdien2015,
options = {hunname},
author = {Nguyễn Hữu Điển},
title = {Thực hành tinha toán trong Maple},
publisher = {ĐHQG Hà Nội},
location= {Hà Nội},
date = {2015},
}
Chỉ định định dạng của tên trường <field>. Trong định dạng,
hãy tham khảo nội dung của <tên trường trường> theo cách #1.
<option> chứa các loại mục trong đó <tên trường loại trường>
được chỉ định <được định dạng>. Nếu không có tùy chọn, nó sẽ
áp dụng cho tất cả các loại mục trong đó tên trường <field
> chưa được định dạng. Không được có khoảng trắng trong
<format>. Ví dụ
\DeclareFieldFormat{title}{\textit{#1}}
Trong trường hợp này, tiêu đề sẽ xuất hiện ở dạng nghiêng
cho tất cả các loại mục chưa được định dạng. Ví dụ, loại mục
sách sẽ được in nghiêng, nhưng bài báo thì không.
\DeclareFieldFormat[article,book]{title}{\textit{#1}}
trong trường hợp của loại phần tử bài báo và sách, tiêu đề
sẽ được in nghiêng, tất cả các phần tử khác sẽ giữ nguyên định
dạng ban đầu.
Nó hoạt động giống như lệnh trước đó, nhưng nó ảnh hưởng
đến tất cả các loại mục. Ví dụ
\DeclareFieldFormat*{title}{\textit{#1}}
Đối với mỗi loại mục, tiêu đề sẽ xuất hiện ở dạng in nghiêng.
\DeclareFieldFormat{titlecase}{\MakeSentenceCase{#1}}
Đối với title , journaltitle và booktitle, chữ cái đầu tiên là
chữ hoa và phần còn lại là chữ thường. Ví dụ, nếu điều này
có ảnh hưởng không mong muốn đối với tên, nó nên được đặt
trong dấu ngoặc đơn. Đặt không chỉ chữ cái mà toàn bộ từ
trong ngoặc đơn để các khoảng trống xung quanh các chữ cái
vẫn chính xác. Ví dụ
title={{Baum--Katz} Type Theorems with Exact Threshold},
sẽ ra Baum–Katz type theorems with exact threshold.
booktitle={{$p$-adic} Logarithmic Forms and Group
Varieties},
sẽ ra q-adic logarithmic forms and group varieties.
\add<jel>
Chèn dấu cách hoặc dấu chấm câu khi định dạng các phần tử
thư mục. <jel> có thể được thay thế bằng:
Dấu hiệu giữa tên tác giả hoặc người biên tập, ngoại trừ
dấu hiệu trước họ. Ví dụ: để chuyển sang dấu gạch ngang:
\renewcommand{\multinamedelim}{\addnbthinspace--\
addnbthinspace}
\finalnamedelim
Trong trường hợp tên của các tác giả hoặc người biên tập thì
ký hiệu trước họ. Ví dụ: để chuyển sang dấu phẩy rồi chuyển
sang dấu cách có thể ngắt:
\renewcommand{\finalnamedelim}{\addcomma\addspace}
\labelnamepunct
Dấu hiệu sau danh sách tên tác giả hoặc biên tập viên. Ví
dụ: để chuyển sang dấu hai chấm rồi chuyển sang dấu cách có
thể ngắt:
\renewcommand{\labelnamepunct}{\addcolon\addspace}
\DeclareBibliographyDriver{<Itement>} {<formatting>}
Định dạng đầu ra của loại Itement. Các lệnh sau đây trợ giúp
trong <formatting>:
\printnames{<Tên trường loại danh sách>} Hiển thị nội dung
của danh sách tên trường.
\printlist{<Tên trường loại danh sách trang>} Hiển thị nội
dung của danh sách tên trường.
\printfield{<Tên trường loại trường>} Hiển thị nội dung của
tên trường.
\ifnameundef{<Tên trường loại trường>}{true}{false}
Nếu tên trường típusúname danh sách được chỉ định
trong <Tên trường loại trường>, thì nó là <true>, nếu
không thì <false>.
\iflistundef{<Tên trường loại trường>} {true} {false}
Nếu tên trường của loại danh sách được chỉ định trong
<Tên trường loại trường>, thì nó là true, nếu không thì là
false.
\begin{lstlisting}[style=latexdef]
\iffieldundef{<Tên trường loại trường>} {true} {false}
\DeclareBibliographyDriver{book}{%
\printnames{author}%
\labelnamepunct%
\printfield{title}%
\newunit
\printlist{publisher}%
\newunit
\printlist{location}%
\newunit
\printfield{date}
\usebibmacro{finentry}}
trong đó <key> là mã định danh của phần tử thư mục được chỉ
định trong tệp bib. Ví dụ
7
\cite[Định
Ví dụ 7.19
lý~5]{Kolmogorov},
8
\cite[122]{Kolmogorov},
\cite[32-45]{Kolmogorov}
: 2
[1, Định lý 5].[1, trang 122],[1, trang 32-45]
Đối với việc sử dụng \cite, kết quả của các ví dụ trước là cho
một kiểu được đánh số. Nếu bạn chọn một phong cách khác, kết
quả có thể khác. Đây không phải là chi tiết ở đây, hãy xem tài
liệu biblatex cho điều này. Thậm chí còn có nhiều cách để liên
kết. Chúng ta đề cập đến ba trong số họ:
\citeauthor{key}
\citetitle{key}
\citeyear{key}
Lựa chọn nhất ghi tên tác giả của tác phẩm, Lựa chọn hai
ghi tên tác phẩm và Lựa chọn ba xuất bản tác phẩm.
Một ví dụ về việc sử dụng biblatex
Sao chép văn bản vào tệp hoctapbib.tex.
7 Ví dụ 7.20 8
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{vietnam}
\usepackage[autolang=hyphen,giveninits,abbreviate=false]{
biblatex}
\setlength{\biblabelsep}{\labelsep}
\renewcommand{\mkbibnamefamily}{\scshape}
\renewcommand{\mkbibnamegiven}{\scshape}
\DeclareFieldFormat*{title}{\textit{#1}}
\DeclareFieldFormat[article]{journaltitle}{#1}
\DeclareFieldFormat[article]{pages}{#1}
\renewcommand{\finalnamedelim}{\addcomma\addspace}
\renewcommand{\labelnamepunct}{\addcolon\addspace}
\renewcommand{\newunitpunct}{\addcomma\addspace}
\DeclareEntryOption[boolean]{hunname}[true]{%
\DeclareNameAlias{author}{family-given}%
\renewcommand{\revsdnamepunct}{}}
\DefineBibliographyExtras{magyar}{\DeclareFieldFormat{
postnote}{#1}}
\addbibresource{references.bib}
\begin{document}
\cite{KolmogorovFomin1981} --
\cite[Định lý 5.]{KolmogorovFomin1981} --
\citeauthor{nhdien2015} \citeyear{nhdien2015} --
\cite{KolmogorovFomin1981,nhdien2015}
\printbibliography
\end{document}
Tệp thư mục: references.bib
@book{KolmogorovFomin1981,
author = {Andrei Nikolayevich Kolmogorov và
Sergei Vasilyevich Fomin},
title = {Các yếu tố của Lý thuyết Hàm và Phân tích Chức nă
ng},
publisher= {Nhà xuất bản kỹ thuật},
location = {Hà Nội},
date = {1981},
}
@book {nhdien2015,
options = {hunname},
author = {Nguyễn Hữu Điển},
title = {Thực hành tính toán trong Maple},
publisher = {ĐHQG Hà Nội},
location= {Hà Nội},
date = {2015},
: 2
[1] – [1, Định lý 5]– Nguyễn Hữu Điển 2015 – [1, 2]
TÀI LIỆU THAM KHẢO
[1] Andrei Nikolayevich Kolmogorov và Sergei Vasilyevich
Fomin, Các yếu tố của Lý thuyết Hàm và Phân tích Chức
năng, 1981, NXB ĐHQG Hà Nội.
[2] Nguyễn Hữu Điển, Thực hành tính toán trong Maple,
2015, NXB ĐHQG Hà Nội.
Chỉ mục là danh sách các khái niệm quan trọng nhất xuất
hiện trong tác phẩm, trong đó bên cạnh mỗi chủ đề là số trang
nơi nó xuất hiện. Có một số công cụ cho việc này. Chúng ta là
gói imakeidx và chương trình thời thượng việc sử dụng nó được
mô tả mà không tuyên bố là đầy đủ.
Chỉ số là
Bạn có thể thêm nó bằng lệnh trong nội dung tài liệu, trong
đó giá trị mặc định của <filename> là \jobname, tức là tên của
tệp tex không có phần mở rộng. Từ chủ đề được đặt trong tệp <
filename>.idx, với điều kiện là tùy chọn name=\param{filename}
đã được chỉ định trong một trong các lệnh \makeindex.
Ví dụ
...
\makeindex[program=texindy,options=-C utf8 -L vietnamese,
name=nevmutato,
title=Chimuc,columns=1]
\makeindex[program=texindy,options=-C utf8 -L vietnamese]
...
\begin{document}
...
Kolmogorov\index[nevmutato]{Andrej Nyikolajevics Kolmogorov
(1903--1987)}
Năm 1933, ông đã phát biểu các tiên đề sau:
...
Độ lệch chuẩn \index{độ lệch chuẩn} được hiểu như sau:
...
Trước đây người ta đã nói rằng nếu từ chủ đề bắt đầu bằng
một số, nó sẽ được gán cho nhóm đầu tiên, đứng trước nhóm A.
Để chỉ định một địa chỉ cho nhóm này, hãy sử dụng một lệnh
trước \printindex
\newcommand {\lettergroupDefault} [1] {<địa chỉ nhóm>}
Ví dụ
\newcommand {\lettergroupDefault} [1] {\par \textbf {
Notations} \par}
Nếu bạn muốn định dạng các điểm đánh dấu của các nhóm
khác, hãy sử dụng dấu trước \printindex
Ví dụ: nếu bạn muốn đóng khung các điểm đánh dấu nhóm,
\newcommand {\lettergroup} [1] {\par \fbox {\textbf {# 1
}} \par \nopagebreak}
Trong trường hợp của một tài liệu tiếng Việt, các nguyên
âm dài được phân loại là các nguyên âm ngắn. Ví dụ, chủ đề
"Án bạ" sẽ được gán cho nhóm A. Điều này biện minh cho nhóm
A được ký hiệu là “A, Á”, nhóm E được ký hiệu bằng “E, É”, v.v.
Đây không phải là trường hợp theo mặc định, nhưng có thể
được giải quyết bằng cách sử dụng mã sau trước \printindex:
newcommand{\lettergroup}[1]{%
\def\letter{#1}%
\def\Letter{A}\ifx\letter\Letter\def\letter{A, Â, Ă, À, Á,
Ả, Ã, Ạ}\fi
\def\Letter{E}\ifx\letter\Letter\def\letter{E, Ê, È, É, Ẻ,
Ẽ, Ẹ}\fi
\def\Letter{I}\ifx\letter\Letter\def\letter{I, Ì, Í, Ỉ, Ĩ,
Ị}\fi
\def\Letter{O}\ifx\letter\Letter\def\letter{O, Ô, Ó}\fi
\def\Letter{U}\ifx\letter\Letter\def\letter{U, Ú}\fi
\par\textbf{\letter}\par\nopagebreak
Trong cài đặt gốc, dấu phẩy được thay thế bằng dấu phẩy.
Nếu bạn muốn số trang xuất hiện tương tự như mục lục, nghĩa
là, để mở rộng nó bằng một loạt dấu chấm đến cạnh cột, hãy
nhập \dotfill thay vì <separator>. Nếu bạn chỉ muốn một
khoảng trắng rộng hơn bình thường, hãy nhập \quad thay vì
<separator>. Mã hoạt động bằng cách tạo tệp user.xdy khi biên
dịch
(markup-locclass-list: open "<separator>": sep ",")
Nội dung. Để tải texindy với tệp này, hãy sử dụng tùy chọn
-M user trong chương trình texindy (xem tùy chọn \makeindex).
Đầu tiên, tài liệu phải được dịch ở dạng thông thường. Thao
tác này sẽ tạo một tệp có một hoặc nhiều phần mở rộng idx sẽ
chứa các từ khóa với số trang thích hợp. Sau đó, với texindy,
dữ liệu được sắp xếp thành một tệp có phần mở rộng là ind.
Cuối cùng, nó phải được dịch lại ở dạng thông thường ít nhất
hai lần. Chúng được thực thi một lần nếu bạn sử dụng tùy
chọn \texindy của chương trình trên lệnh \makeindex và công
tắc -shell-escape trong chương trình pdflatex. Ví dụ: nếu tệp
nguồn là viduindex.tex, hãy nhập tệp đó tại dấu nhắc lệnh
rồi [Enter]. Nếu bạn cũng sử dụng tham chiếu chéo hoặc
biblatex, tốt hơn nên sử dụng chương trình latexmk với tùy
chọn -shell-escape:
rồi [Enter].
Bạn không cần phải viết một tác phẩm dài trong một tệp
duy nhất. Bạn có thể sử dụng tệp chính để tải các tệp con
chứa mỗi chương hoặc phần. Ví dụ: bạn có thể đọc một tệp con
gioithieu.tex vào tệp chính như sau:
\input{gioithieu}
hoặc
\include{gioithieu}
Ví dụ: nếu bạn đặt tệp chapter01.tex trong thư mục hiện tại
trong một thư mục con có tên là chapters, nó sẽ được đưa vào
như sau:
\input{chaper/chapter01}
hoặc
\include{chaper/chapter01}
\include không chỉ đọc tệp dưới dạng \input, mà còn bắt đầu
nội dung của nó trên một trang mới, đóng trang cuối cùng bằng
lệnh \clearpage, để văn bản sau đó bắt đầu trên một trang mới
và đóng bất kỳ bước nào đang chờ xử lý.
LATEX, loại tài liệu beamer phù hợp nhất để trình bày điện tử.
Ưu điểm của bài thuyết trình dựa trên pdf là kết quả cuối cùng
có thể được chiếu trên tất cả các nền tảng và sẽ hoạt động theo
cùng một cách. Bằng cách này, bạn không phải lo lắng về việc
máy nước ngoài không khởi động được hoặc xuất hiện khác với
máy của chính bạn. Các tính năng của lớp beamer:
- Kích thước cạnh: 128mm x 96mm (tỉ lệ 4: 3). Đối với
aspectratio = 169, 160mm x 90mm (tỷ lệ khung hình 16: 9).
- Kích thước phông chữ cơ bản: 11pt. Các kích thước bổ sung
sau có thể được chỉ định trong tùy chọn: 8pt 9pt 10pt 12pt 14
pt 17pt 20pt.
- Phông chữ cơ bản: chân dung, bình thường, kỳ cục.
- Ngắt dòng văn bản chính: được đóng về bên trái nên không
có các ngăn cách từ.
- Không thụt đầu dòng ở đầu đoạn văn mới.
- Vị trí dọc của nội dung trong khung (xem sau): trung tâm.
Có hai tùy chọn khác: t (trên), b (dưới).
- Các gói sau được tự động tải với lớp này: graphicx, amsthm,
xcolor, enumerate, hyperref.
Khi biên tập các ấn phẩm in và điện tử, một phần quan
trọng của công việc đánh máy được giao cho LATEX. Điều này
cũng có thể được giải quyết ở đây, bởi vì beamer có rất nhiều cái
gọi là chứa các giao diện, mỗi giao diện có nghĩa là một thiết
lập và phong cách kiểu chữ. Các giao diện được tải trong phần
mở đầu bằng các lệnh sau:
\useinnertheme[<tùy chọn]{<tên giao diện>}
Phần tử cấu trúc bên trong nào (trang tiêu đề, danh sách,
mảng, môi trường giống mục, hình ảnh, bảng, chú thích cuối
trang, thư mục) xuất hiện và với dạng hình học nào.
\useoutertheme[<tùy chọn]{<tên giao diện>}
Những gì sẽ xuất hiện từ các yếu tố cấu trúc bên ngoài (đầu
trang và chân trang, thanh bên, biểu trưng, tiêu đề khung) và
với hình dạng nào.
\usecolortheme[<tùy chọn]{<tên giao diện>}
Phối màu của các yếu tố cấu trúc bên trong và bên ngoài.
\usefonttheme[<tùy chọn]{<tên giao diện>}
Phông chữ cho các yếu tố cấu trúc bên trong và bên ngoài.
\usetheme[<tùy chọn]{<tên giao diện>}
Đặt giao diện. Căn chỉnh các chủ đề cấu trúc, màu sắc và
phông chữ.
Nên chọn một giao diện hoàn chỉnh trước. Nếu bạn không
thích bất kỳ chi tiết nào trong này, bạn thậm chí có thể áp
dụng một số chủ đề cấu trúc, màu sắc hoặc phông chữ bên
trong hoặc bên ngoài.
shadow -
tree hooks
Smoothtree -
Trong bộ trình chiếu, bản trình bày bao gồm một loạt các
khung và các khung bao gồm một loạt các trang chiếu. Bạn
cũng có thể đặt tiêu đề và phụ đề cho khung. Nếu một khung
chứa một loạt các trang chiếu có chứa một số trang chiếu, thì
các thành viên của tập trang chiếu sẽ lần lượt xuất hiện trong
khung đó. Nếu nội dung của một khung không vừa trên một
trang chiếu, nó có thể bị chia thành nhiều khung. Tiêu đề và
phụ đề của khung gốc xuất hiện trên mỗi khung "bị hỏng". Các
khung bị hỏng như vậy chỉ có thể chứa một trang chiếu tại một
thời điểm.
Tất cả các frame phải được đặt trong một môi trường khung:
\begin {frame} [<option>] {<frame title>} {<frame subtitle>
}
<Nội dung khung>
\end {frame}
Hay
\begin {frame} [<option>]
\frametitle {<frame title>}
\framesubtitle{<frame subtitle>}
<Nội dung khung>
\end {frame}
\setbeamertemplate{frametitle continuation}[from
second]
[\insertcontinuationcountroman.]
Ví dụ → Ví dụ II. → Ví dụ III. → ...
\setbeamertemplate{frametitle continuation}[from
second]
[\insertcontinuationcount.]
Ví dụ → Ví dụ 2. → Ví dụ 3. → ...
\setbeamertemplate{frametitle continuation}[from
second][(tiếp)]
Ví dụ → Ví dụ (tiếp) → Ví dụ (tiếp) → ...
Các trình chiếu phức tạp hơn có thể được tạo bằng cách sử
dụng cái gọi là thông số kỹ thuật lớp phủ. Beamer bổ sung cho
nhiều lệnh tiêu chuẩn với một đặc điểm kỹ thuật lớp phủ. Ví
dụ, đối với danh sách, hãy sử dụng lệnh \item. Việc sử dụng và
hoạt động của nó có thể được hiểu trong ví dụ sau:
\begin {frame}{Ví dụ}{}
\begin {itemize}
\item <1-2> Danh sách mục 1
\item <2> Danh sách mục 2
\item <3> Danh sách mục 3
\item <3-4> Danh sách mục 4
\end {itemize}
\end {frame}
Vì vậy, chúng ta đặt đặc tả lớp phủ giữa các dấu < và >. Bạn
có thể nhập nhiều thông số lớp phủ cùng một lúc, được phân
tách bằng dấu phẩy. Ví dụ:
Bước Thực hiện
<0> Không có trang trình bày nào được hiển thị.
<1> Được hiển thị trên trang trình bày 1.
<1-3> 1-3. hiển thị trên các trang trình bày.
<1-3.5-6> 1-3. và 5-6. hiển thị trên các trang trình bày.
<1.5> Được hiển thị trên các trang chiếu 1 và 5.
<3-> Hiển thị từ trang trình bày 3 đến trang cuối
cùng.
<-3> 1-3. hiển thị trên các trang trình bày.
<-2,4-6,8-> Được hiển thị trên tất cả các trang chiếu trừ
trang chiếu 3 và 7.
Vì thế. thông số kỹ thuật lớp phủ bước cũng có thể được
viết thay cho các con số. Họ sử dụng một bộ đếm được gọi là
beamerpauses với giá trị ban đầu ở đầu khung là 1.
Một đặc tả lớp phủ bước là +(<number>), trong đó <number>
có thể là bất kỳ giá trị nguyên nào, thậm chí là số âm. Hiệu
quả là:
- Thay +(<number>) bằng beamerpauses +<number>. Thay vì
và
\begin{frame}{Ví dụ}{}
\begin{itemize}
\item <1-> Danh sách mục 1
\item <1-> Danh sách mục 2
\item <2-> Danh sách mục 3
\item <2-> Danh sách mục 4
\end{itemize}
\end{frame}
Các lệnh với một đặc tả lớp phủ cũng có thể có một đặc tả cơ
bản. Ví dụ: \item là đặc tả cơ bản <1->, nghĩa là, \item tương
đương với \item <1->. Các thông số kỹ thuật cơ bản của các
lệnh khác được đưa ra khi thảo luận về lệnh đó.
Cũng có thể cho các trang chiếu trong khung làm mờ nội
dung được phép của tất cả các trang chiếu khác trong khung.
Đây là cách thiết lập nó:
\setbeamercovered {transparent = <number>}
Sau đó, khung hiển thị nội dung của các trang chiếu khác
trên trang chiếu với cường độ sáng <number>
\uncover<[spec]>{<text>}
hay
\begin{openverenv} <[spec]> <text> \end{openverenv}
Chỉ trang chiếu được chỉ định mới hiển thị văn bản, các
trang chiếu khác sẽ chỉ chiếm dung lượng, tương ứng, chúng
ta nhìn thấy theo giá trị của minh bạch. (Giá trị mặc định cho
<[spec]> là <1->.)
\visible<[spec]> {<text>}
hay
\begin{visibleenv}<[spec]> <text> \end{visibleenv}
Tương tự như explore, chỉ đặt trong suốt thành tích cực
không ảnh hưởng đến lệnh này. (Giá trị mặc định cho <[spec]
> là <1->.) Lệnh \invisible và môi trường invisibleenv có thể
được sử dụng theo cách tương tự, nhưng có tác dụng ngược
lại. Điều này cũng không bị ảnh hưởng bởi giá trị trong suốt
dương.
\only <[spec]> {<text>}
hay
Trang trình bày được chỉ định sẽ hiển thị: <start1> <text>
<egend1>. Đối với phần còn lại, nó sẽ xuất hiện: <start2><text
><end2>. Đặt trong suốt thành tích cực không ảnh hưởng đến
lệnh này. (Giá trị mặc định cho <[spec]> là <1->.)
\temporal<[spec]>{trước <text>}{<text>}{sau <text>}
trước <text> sẽ xuất hiện trước trang chiếu được chỉ định,
văn bản sẽ xuất hiện trên trang chiếu được chỉ định và sau
<text> sẽ xuất hiện sau trang chiếu được chỉ định. (<[spec]>
không có mặc định ở đây, nó là bắt buộc.) Ví dụ
\begin {frame} {Ví dụ} {}
\temporal <3-4> {slide 1, 2} {3, 4 slide} {5, 6, \dot slide
} \\
\temporal <3,5> {slide 1, 2, 4} {3, 5 slide} {6, 7, \dot
slide} \\
\thời gian <2> {1. slide} {2. slide} {3, 4, \dot slide}
\end {frame}
\begin{overlayarea}{<width>}{<height>}
\only<[spec1]> {<text1>}
\only <[spec2]> {<text2>}
...
\end {overlayarea}
Mỗi trang chiếu trên khung chiếm một hộp <width> và <
height> trong đó <[spec1]>, <[spec2]>, v.v. <text1>, <text2>, v.v.
Khi chúng ta chuyển sang trang chiếu tiếp theo trong một
khung hoặc sang trang chiếu đầu tiên trong khung tiếp theo,
tất cả những gì đã xảy ra cho đến nay là hình ảnh trong trang
chiếu trước đó chỉ đơn giản là chuyển sang lại. Bạn cũng có thể
làm cho những thay đổi này ngoạn mục hơn với các hiệu ứng
khác nhau. Thật không may, không phải tất cả các trình xem
pdf đều hỗ trợ các hiệu ứng này, vì vậy nó có thể không hoạt
động trên máy nước ngoài. Ví dụ: chúng hoạt động với Adobe
Reader, nhưng chỉ khi bạn chuyển sang chế độ toàn màn hình,
như thường thấy khi trình bày bản trình bày. Bạn có thể đạt
được những hiệu ứng này bằng cách viết các lệnh sau vào môi
trường khung:
\transblindshorizontal<[spec]> [<option>]
\transblindsvertical<[spec]> [<option>]
\transboxin<[spec]> [<option>]
\transboxout<[spec]> [<option>]
\transcover<[spec]> [<option>]
\transdissolve<[spec]> [<option>]
\transfade<[spec]> [<option>]
\transglitter<[spec]> [<option>]
\transreplace<[spec]> [<option>]
\transsplitverticalin<[spec]> [<option>]
\transsplitverticalout<[spec]> [<option>]
\transsplithorizontalin<[spec]> [<option>]
\transsplithorizontalout<[spec]> [<option>]
\transwipe<[spec]> [<option>]
Trong các lệnh này, giá trị mặc định cho đặc tả lớp phủ là
<1->. Các tùy chọn có thể có:
duration = <time> Đây là thời gian hiệu ứng kéo dài bao
nhiêu giây.
direction = <angle> Hiệu ứng được thực hiện ở góc này. Các
giá trị <angle> có thể có cho góc 0 là 0, 90, 180, 270 hoặc thậm
chí là 315 cho \transglitter.
Cho đến nay, chuyển đổi slide luôn được thực hiện chỉ bằng
một nút bấm. Điều này có thể được tự động hóa bằng cách nhập
một thời gian nhất định, nhưng điều này cũng chỉ có thể thực
hiện được ở chế độ toàn màn hình với lệnh sau:
\transduration <[spec2]> {<time>}
Giá trị mặc định cho đặc tả lớp phủ là <1->. Thay thế <time>
bằng số giây bạn muốn xem các slide được chỉ định trong thông
số kỹ thuật mà không cần nhấn nút.
Trang đầu tiên của bản trình bày là trang tiêu đề, nơi chứa
các dữ liệu cần thiết với các lệnh sau trong phần mở đầu.
\title[<Tiêu đề ngắn>]{<Tiêu đề>}
\subtitle[<Tiêu đề ngắn>]{<Tiêu đề con con>}
\author[<Tên viết tắt>]{<Tên>}
\institute[<Tên viết tắt của viện>]{<Tên viện>}
\date[<Ngày ngắn>]{<Ngày>}
\logo{\includegraphics[<Tùy chọn>]{<tệp ảnh>}}
\titlegraphic{\includegraphics[<Tùy chọn>]{<Tệp ảnh>}}
Sau đó, trang tiêu đề có thể được tạo trong nội dung tài liệu
như sau:
\begin {frame}[plain]
\titlepage
\end {frame}
hay
\maketitle
tương đương với:
\begin {frame}
\titlepage
\end {frame}
Trong beamer, cấu trúc của văn bản tương tự như lớp bài
viết, nhưng không có đoạn văn và đoạn văn phụ.
Nếu bạn đang thực hiện một bài thuyết trình rất dài, bạn
có thể cần chia nhỏ nó thành nhiều phần. Phần mới của
\part[<Tiêu đề ngắn>]{<Tiêu đề>}
lệnh có thể được bắt đầu ngoài khung. Địa chỉ được chỉ
định trong tùy chọn được mặc định là tương ứng với tiêu đề
của phần. Bằng cách này, nó không xuất hiện ở bất kỳ đâu
ngoài trình xem pdf. (địa chỉ ngắn) nếu nó được kích hoạt hoặc
trong thanh điều hướng (thường là địa chỉ ngắn), nếu được
đặt. Nếu bạn muốn lệnh trước đó đưa ra một tạo một khung
riêng với tiêu đề, bạn có thể sử dụng \AtBeginPart, \insertpart,
lệnh \insertpartnumber và \insertromanpartnumber. Ví dụ: nhập
thông tin sau trong phần mở đầu:
\AtBeginPart{
\begin{frame}[plain]
\begin{center}
{\Large\insertromanpartnumber. Tiêu đề\\[10mm]}
{\large\insertpart\\}
\end{center}
\end{frame}}
Sau đó
\part{<Tiêu đề của phần>}
phát lệnh tạo một khung với số bộ phận và tiêu đề. Phần
mới của
\section[<Tiêu đề ngắn>]{<tiêu đề>}
lệnh có thể được bắt đầu ngoài khung. Địa chỉ được chỉ
định trong tùy chọn mặc định là tiêu đề phần. Bằng cách này,
nó không xuất hiện ở bất cứ đâu, chỉ giữa các dấu trang trong
trình xem pdf (tiêu đề ngắn) nếu nó được kích hoạt và trong
thanh điều hướng (thường là tiêu đề ngắn) nếu nó được đặt
theo cách đó. Nếu bạn muốn tạo một khung riêng biệt với địa
chỉ khi bạn sử dụng lệnh trước đó, bạn có thể sử dụng các lệnh
\AtBeginSection, \inserttsection và \inserttsectionnumber. Ví
Sau đó
\section{<Tiêu đề>}
phát lệnh tạo một khung với số phần và tiêu đề. Nó có ý
nghĩa có thể tiến hành theo cách tương tự đối với tiểu mục và
tiểu mục con.
Bạn cũng có thể hiển thị sự phân chia nội dung của phần,
mục, tiểu mục, tiểu mục dưới dạng các liên kết trong một
khung riêng. Ví dụ: nếu bạn không sử dụng lệnh \part, bạn
có thể nhập mã sau vào sau trang tiêu đề:
\begin{frame}[plain]{Mục lục}
\tableofcontents
\end{frame}
Nếu bạn muốn có hiệu lực của lệnh \pause trước tiêu đề
của mỗi phần ngoại trừ phần đầu tiên trong mục lục, hãy sử
dụng tùy chọn tạm dừng của lệnh \tableofcontents. Nếu bạn
sử dụng tùy chọn tạm dừng, bạn có thể viết lệnh \pause trước
tất cả các tiểu mục và tiêu đề tiểu mục ngoại trừ tiểu mục đầu
tiên trong mục lục.
Ví dụ: nếu bạn không muốn tiêu đề của phần phụ trong
mục lục hoặc nếu bạn không muốn tiêu đề hiện tại bị mờ đi,
bạn có thể sử dụng các tùy chọn \tableofcontents sau:
sectiontyle = <style>
subsectiontyle = <style>
subsubsectiontyle = <style>
trong đó <style> có thể là: show (hiển thị), hide (ẩn), shaded
(bóng mờ). Ví dụ
\tableofcontents [subsubsectiontyle = hide]
tiểu mục tiêu đề không có trong mục lục. Nếu một từ nhất
định Nếu bạn tạo mục lục phụ cho máy cắt cỏ, bạn cũng có thể
kết hợp các kiểu.
sectiontyle = <style1> / <style2>
<style1> Kiểu của tiêu đề phần hiện tại.
<style2> Kiểu tiêu đề của các phần khác.
subsectiontyle = <style1> / <style2>
<style1> Kiểu của tiêu đề tiểu mục hiện tại.
<style2> Kiểu tiêu đề của các phần phụ khác.
subsectiontyle = <style1> / <style2> / <style3>
<style1> Kiểu của tiêu đề tiểu mục hiện tại.
<style2> Kiểu tiêu đề của các phần phụ khác của phần
hiện tại.
<style3> Kiểu tiêu đề của các tiểu mục khác (trong trường
hợp ẩn, không chỉ tiểu mục này tiêu đề, cũng không phải
tiêu đề của tiểu mục của chúng, xuất hiện trong mục lục).
subsubsectiontyle = <style1> / <style2>
<style1> Kiểu của tiêu đề phần phụ hiện tại.
<style2> Kiểu tiêu đề của các phần phụ khác.
subsubsectiontyle = <style1> / <style2> / <style3>
<style1> Kiểu của tiêu đề phần phụ hiện tại.
<style2> Kiểu tiêu đề của các tiểu mục khác của tiểu mục
hiện tại.
<style3> Kiểu tiêu đề của các phần phụ khác.
subsubsectiontyle = <style1> / <style2> / <style3> / <style4>
<style1> Kiểu của tiêu đề phần phụ hiện tại.
<style2> Kiểu tiêu đề của các tiểu mục khác của tiểu mục
hiện tại.
<style3> Kiểu tiêu đề của các phần phụ khác của phần
hiện tại.
<style4> Kiểu tiêu đề của các phần phụ khác.
Ví dụ: bằng cách sử dụng mã sau, chúng ta nhận được một
mục lục phụ cho phần đó:
\section{...}
...
\section{...}
\begin{frame}[plain]{}{}
\tableofcontents[sectionstyle=show/hide,subsectionstyle=
show/show/hide]
\end{frame}
Bạn có thể tạo một danh mục trong chính xác một khung
như cách bạn làm đối với các tài liệu in. Sự khác biệt duy nhất
là lệnh \bibitem có thể được cung cấp một đặc tả lớp phủ ở đây
(mặc định <1->). Ví dụ
\begin{frame}[plain]{Tài liệu}
\begin{thebibliography}{12}
\bibitem <+ -> {Salomaa1973} A. ~ Salomaa, ...
\bibitem <+ -> {Dijkstra1982} E. ~ Dijkstra, ...
...
\end{thebibliography}
\end{frame}
Beamer tải gói liệt kê. Nó không tương thích với gói
paralist.sty, vì vậy đừng tải nó. Do đó, bạn cũng không thể sử
dụng môi trường danh sách compactenum và compactitem. Nếu
bạn muốn danh sách không có khoảng trắng thừa theo chiều
dọc, thì khung nạp môi trường với tùy chọn squeeze. Các môi
trường tiêu chuẩn có thể được sử dụng: itemize , enumerate ,
description. Những môi trường này không tồn tại, nhưng lệnh
\item có đặc tả lớp phủ với giá trị mặc định là <1->. Ví dụ
\begin{frame}{}{}
\begin{itemize}
\item<+-> 1. Danh sách
\item<+-> 2. Danh sách
\item<+-> 3. Danh sách
\end{itemize}
\end{frame}
Ví dụ: nếu bạn muốn thay đổi đặc tả lớp phủ cơ bản thành <+
-> trong một danh sách cụ thể, bạn có thể thực hiện như sau.
(Điều này tương đương với mã trước đó.)
\begin{frame}{}{}
\begin{itemize}[<+->]
\item 1. Danh sách
\item 2. Danh sách
\item 3. Danh sách
\end{itemize}
\end{frame}
Ví dụ: nếu bạn muốn thay đổi đặc điểm kỹ thuật lớp phủ cơ
bản cho tất cả các danh sách trong một khung nhất định thành
<+ ->, bạn có thể thực hiện như sau.
\begin{frame}[<+->]{}{}
\begin{itemize}
\item 1. Danh sách
Ví dụ: nếu khung cần tùy chọn t, hãy sửa đổi dòng 1 trong mã
trước đó như sau:
\begin{frame}[<+->][t]{}{}
Nếu bạn sử dụng đồng thời một đặc tả lớp phủ và một tùy
chọn trên lệnh \item, hãy làm như vậy theo thứ tự đó. Ví dụ
\item<+->[--]
Nếu bạn muốn thay đổi cách đánh số của một cấp cụ thể
trong danh sách được đánh số cụ thể, bạn có thể sử dụng
\begin{enumerate}[style]
mở ra môi trường, giống như trong lớp bài viết. Đối với môi
trường liệt kê, nếu bạn muốn đặt đặc tả lớp phủ cơ bản thành
<+ ->, ngoài tùy chọn, bạn có thể thực hiện như sau:
\begin{enumerate} [<+ ->][style]
Đặc tả lớp phủ cơ bản là <1->. Nếu bạn muốn thay đổi
điều này cho các mảng trong một khung nhất định, bạn phải
tiến hành chính xác như đối với danh sách. Ngoài ra còn có
hai mảng đặc biệt khác nhau cơ bản về màu sắc: môi trường
alertblock và exampleblock, cách sử dụng tương tự như trước
đó.
Trong beamer, môi trường giống khối hoạt động như một
định lý, trong đó địa chỉ là địa chỉ của môi trường giống khối.
Bởi vì gói amsthm được tải theo mặc định, môi trường thử
nghiệm cũng có thể được sử dụng. Môi trường giống khối nên
được xác định và sử dụng chính xác như đã thảo luận trong
trường hợp thông thường và trong xem xét gói amsthm, với hai
điểm khác biệt.
Một điểm khác biệt là các môi trường giống như mục đã xác
định cũng có thể được sử dụng với đặc tả lớp phủ (mặc định <1
->). Nếu bạn muốn thay đổi điều này cho các môi trường giống
như mục trong một khung nhất định, bạn phải tiến hành chính
xác như đối với danh sách. Sự khác biệt khác là việc đánh số
mục không được hiển thị theo mặc định. Điều này có thể được
thay đổi thành
\setbeamertemplate{theorems}[numbered]
trong phần mở đầu, nhưng trong trường hợp của Việt nam,
chúng ta không đạt được kết quả tốt, vì kiểu chữ tiếng Anh cho
điều này không được vietnam.ldf thay đổi. Nếu bạn vẫn muốn
đánh số mục bằng tiếng Việt, bạn có thể sử dụng giải pháp
sau:
\setbeamertemplate{theorems}[default]
\newtheorem{tetel}{\inserttheoremnumber. tétel}
8.6.4 Hộp
Các hộp có thể được sử dụng trong beamer như bình thường,
nhưng hai hộp đoạn được thêm vào ở đây. Trước khi mô tả
những điều này, hãy giới thiệu đôi nét về quản lý màu. Trình
chiếu xác định trước các sơ đồ màu tự đặt tên và chúng ta có
thể tạo một sơ đồ màu. Ví dụ
\setbeamercolor{my color}{fg = blue, bg = yellow}
xác định một bảng màu được gọi là my color của riêng,
trong đó nền là màu vàng và nền trước, tức là nội dung, có
màu xanh lam. Một trong những hộp đoạn beamer là:
\begin{beamercolorbox}[<tùy ch>]{<color scheme>}
<Hộp nội dung>
\end{beamercolorbox}
Ví dụ
\setbeamercolor{sajat szin}{fg=blue,bg=yellow}
\begin{frame}{}{}
\begin{beamercolorbox}[wd=6cm,shadow,rounded,center]{sajat
szin}
Nội dung
\end{beamercolorbox}
\end{frame}
Hộp đoạn văn được xác định bởi môi trường khác có các góc
tròn và bạn có thể đặt tiêu đề cho nó trong một tiêu đề:
\begin{beamerboxesrounded}[<tùy chọn>]{address}
<Hộp nội dung>
\end{beamerboxesrounded}
8.6.5 Tô màu
Ngoài các tùy chọn trên top , middle và bottom, bạn cũng có thể
sử dụng tùy chọn middle, cho phép bạn chỉ định vị trí thẳng
đứng của mức giữa của màu được chỉ định ở giữa. Đây là tỷ lệ
giữa 0 và 1, trong đó 0 là mức thấp nhất và 1 là mức cao nhất.
Ví dụ
\setbeamertemplate{background canvas}
[vertical shading][midpoint=0.3,middle=yellow]
Nếu bạn muốn có một hình nền cho học sinh, hãy viết những
điều sau trong phần mở đầu:
\setbeamertemplate{background canvas}
{\includegraphics[width = \paperwidth]{<image>}}
Hình ảnh <image> xuất hiện trong nền của mỗi trang chiếu.
Nếu bạn muốn điều tương tự cho các trang trình bày trong
một khung hình để đạt được, bạn cần làm điều này:
{\setbeamertemplate{background canvas}
{\includegraphics[width=\paperwidth]{<image>}}
\begin{frame}
...
\end{frame}}
Hình ảnh có thể được dán, như trong trường hợp bình
thường, bằng lệnh \includegraphics, nhưng đây là đặc tả lớp
phủ với giá trị mặc định là <1->.
\includegraphics<[spec]>[<tùy chọn>]{figure}
Hình ảnh không chiếm dung lượng trên trang chiếu không
được đánh dấu. Điều này là để làm cho việc tạo hoạt ảnh cho
một loạt hình ảnh trở nên dễ dàng hơn. Ví dụ
\includegraphics<+>[width=5cm]{figure0}
\includegraphics<+>[width=5cm]{figure1}
\includegraphics<+>[width=5cm]{figure2}
\includegraphics<+>[width=5cm]{figure3}
Đoạn mã trước đây đã có thể được coi là một hình ảnh động,
nhưng nếu nó bao gồm nhiều hình ảnh, thì đoạn mã cũng bao
gồm nhiều dòng, điều này thật bất tiện. Vấn đề này có thể được
giải quyết với gói xmpmulti.sty. Giả sử hoạt ảnh bao gồm các
hình ảnh fig-0.png, fig-1.png, fig-2.png, ..., fig-20.png. Sau đó,
một
\multiinclude[<+>][format = jpg, graphics = {width = 5cm}]{
fig}
(trong xmpmulti.sty)
Giải pháp này đã rất tiện lợi về mặt mã hóa, nhưng việc
sử dụng bản trình bày thì chưa, vì bạn phải cuộn qua máy
tính cho mỗi lần thay đổi hình ảnh. Vấn đề này có thể được
giải quyết, ví dụ, với lệnh \transduration được mô tả trước đó,
nhưng nó cung cấp một giải pháp tốt hơn nhiều cho
\animategraphics[<option>] {<speed>} {<basicname>} {<first>
} {<last>}
(trong animate.sty, https://ctan.org/pkg/animate )
Mã này sẽ phát một loạt hình ảnh dưới dạng video, miễn là
tính năng này được hỗ trợ trong trình xem pdf. Adobe Reader
là như vậy, nhưng trình xem pdf tích hợp của SumatraPDF hoặc
TeXstudio thì không. Chỉ sử dụng lệnh này trong khung có một
trang chiếu.
8.6.8 Video
Bạn cũng có thể phát video trong khung của bản trình bày
bằng lệnh sau:
\movie[<option>] {<poster>} {<video tệp>}
(trong multimedia.sty)
Lưu ý rằng tính năng phát lại video trên máy nước ngoài có
thể không hoạt động. Ví dụ: nếu codec bạn cần phát trên máy
của mình không được cài đặt, bạn sẽ nhận được lỗi.
Chỉ phát lại diễn ra trong tệp pdf, tệp video không được
tích hợp trong pdf. Vì vậy, khi trình chiếu, tập tin video phải
được sao chép bên cạnh tập tin pdf.
Một vấn đề khác có thể được quan tâm là chương trình xem
pdf có thể coi việc phát video là một rủi ro bảo mật. Điều này
phải được đặt riêng trước khi chiếu.
Cho đến khi video bắt đầu, “áp phích” sẽ xuất hiện trong
khu vực được chỉ định cho video, trừ khi bạn đã chỉ định
tùy chọn áp phích (xem sau). Nhấp để bắt đầu phát lại. "Áp
phích" có thể là văn bản hoặc hình ảnh được tải bằng lệnh
\includegraphics.
Các tùy chọn có thể có:
width = <width> Chiều rộng của video.
height = <height> Chiều cao của video.
poster Cho đến khi video bắt đầu, bạn sẽ không nhìn thấy
“áp phích” mà là khung đầu tiên của video. Nhấp để bắt
đầu phát lại.
showcontrols Hiển thị thanh điều hướng bên dưới video.
start = <time> Chỉ định điểm bắt đầu phát lại video. Ví dụ:
start = 5s có nghĩa là rằng điểm bắt đầu phát lại là 5
giây.
duration = <time> Thời lượng để phát một phần của video. Ví
dụ: thời lượng = 25 giây nó nghĩa là bạn đang chơi một
phần trong 25 giây. Ví dụ
\movie[width=8cm, height = 6cm, showcontrols, poster]{
}{video.avi}
Cũng có thể sử dụng tùy chọn \label và lệnh \
hyperlinkmovie (trong multimedia.sty) đa phương tiện
cùng nhau sử dụng để phát các khoảng thời gian khác
nhau của video trên một liên kết duy nhất bằng một cú
nhấp chuột. Các liên kết này phải nằm trên cùng một
trang trình bày với vị trí của video. Ví dụ
\begin{frame}{}{}
\movie[label=cimke,width=8cm,height=6cm,showcontrols,poster
]{}{video.avi}
\par\medskip
\hyperlinkmovie[start=5s,duration=10s]{cimke}{5--15\,sec}
\par
\hyperlinkmovie[start=20s,duration=25s]{cimke}{20--45\,sec}
\end{frame}
Nếu video không ở trong tệp pdf mà chỉ bằng cách nhấp vào
liên kết có ứng dụng bên ngoài bạn muốn chơi, bạn không cần
gói multimedia.sty:
\href{run: <video file>} {<link text>}
Tất nhiên, lệnh này chỉ hoạt động nếu bạn có ứng dụng bên
ngoài cho avi trên máy của mình được gán.
8.6.9 Phóng to
Có thể phóng to một vùng cụ thể của trang chiếu bằng lệnh
framezoom. Ví dụ
\framezoom<1> <2>[border=3](1 cm, 2 cm)(4 cm, 3 cm)
lệnh ở đầu khung, điều sau sẽ xảy ra. Trang trình bày 3 sẽ
xuất hiện trên trang trình bày 1 Khung dày pixel xung quanh
một hình chữ nhật 4cm × 3cm với góc trên cùng bên trái là
1cm cách mặt trái của gương văn bản và cách mặt trên của
gương văn bản 2cm. Phần được chọn khu vực hoạt động như
một liên kết, nhấp vào nó sẽ đưa bạn đến trang trình bày thứ
2 với phần đã chọn trước đây bạn có thể thấy nó được phóng
to bằng kích thước của toàn bộ trang chiếu. Toàn bộ khu vực
của trang trình bày 2 cũng hoạt động như một liên kết, nhấp
để quay lại trang trình bày 1. (Các liên kết sẽ hoạt động chính
xác nếu hoàn chỉnh chế độ màn hình là trình xem pdf.) Ví dụ
\begin{frame}{}{}
\frameome <2> <3> [border = 3] (1 cm, 0,5 cm) (5 cm, 3,75
cm)
\frameome <2> <4> [border = 3] (6,2cm, 0,2cm) (4,5cm, 3,375
cm)
\frameome <2> <5> [border = 3] (2cm, 5cm) (4cm, 3cm)
\includegraphics[width = \textwidth] {pic}
\end {frame}
tạo một khung gồm 5 trang chiếu. Trang trình bày 1 tải hình
ảnh pic.jpg và sau đó sao chép dikon chọn các phần để phóng
to. Nhấp vào chúng để xem độ phóng đại.
\begin {frame}
\eqref {method}
\end {frame}
Bạn sẽ thấy rằng việc nhấp vào liên kết được tạo bởi \eqref
{method} sẽ không bản trình bày chuyển đến phương trình, tức
là không phải trượt 2 của khung "Ví dụ", nhưng để trượt 1. Để
giải quyết vấn đề này, lệnh \label cũng là lớp phủ đặc điểm kỹ
thuật với giá trị mặc định là <1> (vì vậy liên kết nhảy đến slide
Nếu bạn muốn tham chiếu một trang trình bày cụ thể trong
một khung, hãy sử dụng nhãn môi trường khung Lựa chọn:
\begin{frame}[label = label]{Ví dụ}{}
\begin{itemize}
\item <+ -> Liệt kê mục 1
\item <+ -> Liệt kê mục 2
\end {itemize}
\end {frame}
\begin {frame}
\ref {tag <2>}
\end {frame}
Sau đó, \ref {tag <2>} sẽ tạo một liên kết có số khung để nhấp
vào nhảy đến trang trình bày 2 của khung. Nếu bạn sử dụng
lệnh \hyperlink thay vì \ref, bạn có thể nhập văn bản của liên
kết. Ví dụ
\begin{frame}[label = label]{Ví dụ}{}
\begin {itemize}
\item <+ -> Liệt kê mục 1
\item <+ -> Liệt kê mục 2
\end {itemize}
\end {frame}
\begin {frame}
\hyperlink{tag <2>} {Chuyển đến trang trình bày 2 của khung
trước đó.}
\end {frame}
8.6.11 Nút ấn
Không chỉ văn bản mà còn có thể gán các nút cho một liên
kết:
\beamerbutton{<chữ nút>}
\beamergotobutton{<chữ nút>}
\beamerskipbutton{<chữ nút>}
\beamerreturnbutton{<chữ nút>}
Các biểu tượng cho các nút bấm được hiển thị trong
\insertgotosymbol
\inserttskipsymbol
\insertreturnsymbol
bạn có thể thay đổi nó bằng cách xác định lại các lệnh. Màu
nút và phông chữ văn bản bạn cũng có thể thay đổi nó. Ví dụ
\renewcommand{\insertgotosymbol}{$\ggg$}
\setbeamercolor{button}{fg=black,bg=yellow}
\setbeamercolor{button border}{fg=red}
\setbeamerfont{button}{family=\rmfamily,shape=\itshape,
series=\bfseries}
Nếu bạn đã tải một khung có tùy chọn nhãn, bạn có tùy
chọn để \againframe để hiển thị nội dung của khung tại một
điểm khác, có thể bằng một lớp phủ khác đặc điểm kỹ thuật,
với một tùy chọn khác. Ví dụ
Khi biên dịch nguồn, LATEX đầu tiên kiểm tra từng ký tự.
Nếu nó được bao gồm trong hai bảng sau - tức là cái gọi là Ký
tự ASCII - giữ lại nó, nhưng nếu không, hãy nhập một lệnh
thích hợp vào vị trí của nó, lệnh này bây giờ chỉ chứa các ký
tự ASCII. Ví dụ: thay thế Ő bằng ký tự \H{O}. Nếu tệp nguồn
được mã hóa UTF-8, điều này sẽ được thực hiện theo mặc định
từ năm 2018 trở đi. Nếu nguồn được mã hóa khác, bắt buộc
phải sử dụng gói inputenc với tùy chọn tương ứng với mã hóa.
Mã hóa ASCII là 8-bit, nhưng mã đầu tiên trong số này là
0 và chỉ thay đổi vào các 7 số khác. Như vậy, có 27 = 128 ký tự
được mã hóa ASCII.
Ký tự mã Ký tự mã Ký tự mã Ký tự mã
trắng 32 8 56 P 80 h 104
! 33 9 57 Q 81 i 105
" 34 : 58 R 82 j 106
# 35 ; 59 S 83 k 107
$ 36 < 60 T 84 l 108
% 37 = 61 U 85 m 109
& 38 > 62 V 86 n 110
’ 39 ? 63 W 87 o 111
( 40 @ 64 X 88 p 112
) 41 A 65 Y 89 q 113
* 42 B 66 Z 90 r 114
+ 43 C 67 [ 91 s 115
, 44 D 68 \ 92 t 116
- 45 E 69 ] 93 u 117
. 46 F 70 ^ 94 v 118
/ 47 G 71 _ 95 w 119
0 48 H 72 ‘ 96 x 120
1 49 I 73 a 97 y 121
2 50 J 74 b 98 z 122
3 51 K 75 c 99 { 123
4 52 L 76 d 100 | 124
5 53 M 77 e 101 } 125
6 54 N 78 f 102 ~ 126
7 55 O 79 g 103
mô tả tham chiếu mã
đóng số 0 ^^@ 0
đầu tiêu đề ^^A 1
bắt đầu văn bản ^^B 2
cuối văn bản ^^C 3
kết thúc quá trình truyền dữ liệu ^^D 4
kiểm tra ^^E 5
xác nhận ^^F 6
đổ chuông ^^G 7
trở lại ^^H 8
Không chỉ ký tự điều khiển có thể được tham chiếu với một
số ký tự sau ^^. Nói chung, nếu mã ASCII thập phân của ký tự
là x và mã ASCII thập phân của ký tự sau ^^ liên quan đến ký
tự là y, thì
(
y + 64 nếu y = 0, 1, . . . , 63,
x=
y − 64 nếu y = 64, 65, . . . , 127,
hoặc là (
x + 64 nếu x = 0, 1, . . . , 63,
y=
x − 64 nếu x = 64, 65, . . . , 127.
7 Ví dụ 9.1 8: 2
\string\TeX\TeX \TeXTEX
Chuỗi điều khiển là một chuỗi được coi là một đơn vị duy
nhất bởi TEX. Ví dụ như lệnh, bộ đếm, tham số. TEX là bước
đầu tiên trong quá trình xử lý tệp văn bản được quét. chia nhỏ
nó thành các mã thông báo. Sau đó, TEX coi mỗi từ điều khiển
là một mã thông báo duy nhất và truyền tất cả các ký tự khác
như một mã thông báo duy nhất. Các khoảng trắng hoặc nhận
xét không cần thiết sẽ không được xử lý thêm. Nó phân loại các
ký tự được quét và gán mã danh mục của nó cho từng ký tự.
Macro là một mã chương trình được đặt tên. Khi tên này
được gọi, TEX thực thi mã chương trình đã cho. Tên của macro
có thể chứa bất kỳ ký tự nào, thậm chí là khoảng trắng, ngoài
\ hiện tại (chính xác hơn là 0 ký tự được mã hóa bên trong).
Nếu tên macro chỉ bao gồm các chữ cái trong bảng chữ cái
tiếng Anh và ký tự @ không có dấu cách, nó được gọi là tên
lệnh. Một macro có tên lệnh có thể được chạy bằng cách đặt ký
tự \ trước tên lệnh (chính xác hơn là 0 ký tự được mã hóa bên
trong). Chuỗi kết quả được gọi là một lệnh. Ví dụ: bfseries là
tên lệnh có thể được thực thi bằng cách gõ \bfseries. Các lệnh
có tên chứa ký tự @ được gọi là lệnh nội bộ.
Bạn có thể chạy bất kỳ macro nào bằng cách nhập tên
macro giữa các lệnh \csname và \endcsname.
Phần 9.1.1 các lệnh nội bộ được đề cập trong phần nay
không thể được sử dụng trong tệp nguồn LATEX đơn giản, chỉ
trong tệp lớp (.cls) và gói (.sty). Nếu bạn vẫn muốn sử dụng
lệnh nội bộ trong tệp nguồn LATEX đơn giản (.tex), hãy đặt nó
giữa lệnh \makeatletter và \makeatother. Các lệnh này không
thể được đưa vào macro mô tả một lệnh mới. Ví dụ, không
chính xác:
\def\asterisk#1#2{\makeatletter\@ifstar{#1}{#2}\makeatother
}
Mã sau là đúng:
\makeatletter
\def\hacsillag#1#2{\@ifstar{#1}{#2}}
\makeatother
Có các lệnh mang kích thước chiều dài. Những cái gọi là
các lệnh về độ dài. Ví dụ là \textwidth (chiều rộng khuôn văn
bản), \textheight hoặc \pagegoal (chiều cao khuôn văn bản) và
\pagetotal (khoảng cách giữa đường cơ sở của vị trí hiện tại và
đường cơ sở của dòng đầu tiên). Các lệnh sau có thể được sử
dụng để xử lý các lệnh độ dài:
\newlength{<lệnh độ dài mới>}
Xác định một lệnh độ dài mới. Giá trị mặc định của nó là
0pt. Ví dụ
\newlength {\mylength}.
\setlength{<lệnh độ dài>}{<độ dài>}
Lệnh <lệnh độ dài> tiếp nhận giá trị của <lệnh độ dài khác>.
Ví dụ
\setlength {\mylength} {\textwidth}
Lệnh <lệnh độ cao> chọn chiều cao của <văn bản> (chiều cao
của phần trên đường cơ sở).
\settodepth{<lệnh độ sâu>}{<văn bản>}
Lệnh <lệnh độ sâu> lấy độ sâu của <văn bản> (độ cao bên dưới
đường cơ sở).
\addtolength{<độ dài>}{<số đơn vị thêm>}
Tăng giá trị của lệnh <độ dài> bằng <độ dài cũ>+<số đơn vị th
êm>. "Chiều dài" cũng có thể âm, dẫn đến giảm. (Độ dài linh
hoạt cũng có thể được thêm vào.)
\the<lệnh độ dài>
cho giá trị hiện tại của <lệnh độ dài> được đo bằng pt. Ví dụ
\the\textwidth
\uselengthunit{<đơn vị>}\printlength{<lệnh độ đài>} (
printlen.sty).
Chỉ định giá trị hiện tại của <lệnh độ đài> được đo bằng
<đơn vị>. Ví dụ
\uselengthunit{cm}\printlength{\paperwidth}
7 Ví dụ 9.2 8
\newlength{\hossz}
\newlength{\melyseg}
\settoheight{\hossz}{vizsga}
\settodepth{\melyseg}{vizsga}
Chiều cao của từ kiểm tra \the\hossz, chiều sâu \the\
melyseg,
và tổng của chúng là \addtolength{\hossz}{\melyseg}\the\
hossz.
: 2
Chiều cao của từ kiểm tra 8.538pt, chiều sâu 2.502pt, và
tổng của chúng là 11.04pt.
9.2 Bộ đếm
Bộ đếm LATEX lưu trữ các số nguyên. Các bộ đếm tích hợp
là:
part số phần
chapter số chương
section số đoạn
subsection số tiểu đoạn
subsubsection số tiểu đoạn nhỏ
paragraph tiểu mục
subparagraph tiểu mục nhỏ
tocdepth độ sâu của mục lục
secnumdepth số độ sau của tiểu đoạn
page số trang
equation số phương trình
figure số hình
table số bảng
enumi số danh sách cấp 1
Một môi trường giống như định lý được tạo bằng lệnh \
newtheorem cũng tạo ra một bộ đếm. Ví dụ: nếu một môi trường
giống như mục lemma được xác định, một bộ đếm lemma cũng
được tạo để đánh số nó.
Các lệnh được sử dụng để quản lý bộ đếm:
\newcounter{<số đếm mới>}
Xác định một bộ đếm mới. Giá trị mặc định là 0. Nếu giá trị
của <bộ đếm> thay đổi, giá trị của <bộ đếm> mới được đặt lại về
0.
\setcounter{<số đếm>}{<một số>}
Tăng giá trị của <số đếm> bằng giá trị của <một số>, có thể là số
âm.
\stepcounter{<số đếm>}
Tăng giá trị của <số đếm> lên 1 và nếu sau đó chúng ta đặt một
nhãn bằng lệnh \label, thì tham chiếu đến nó bằng lệnh \ref
sẽ in ra giá trị của <số đếm> tại đây.
\value{<số đếm>}
Chia giá trị của <số đếm> cho <một số> và lấy toàn bộ.
\arabic{<số đếm>}
Hiển thị giá trị của <số đếm> bằng chữ số Ả Rập.
\Roman{<số đếm>}
Hiển thị giá trị của <số đếm> bằng chữ số La Mã lớn.
\roman{<số đếm>}
Hiển thị giá trị của <số đếm> bằng các chữ số La Mã nhỏ.
\Alph{<số đếm>}
Hiển thị giá trị của <số đếm> với đánh số chữ và số lớn.
\alph{<số đếm>}
Hiển thị giá trị của <số đếm> bằng cách đánh số chữ và số nhỏ.
\fnsymbol{<số đếm>}
Để hiển thị giá trị của <số đếm> với các ký hiệu: *, †, ‡, S,
¶, ∥, **, ††, ‡‡.
\the<số đếm>
Lệnh này được xác định khi tạo <số đếm>, nó dịch giá trị của
<số đếm> sang tiếng Ả Rập. đánh số. Ví dụ, nó có thể được định
nghĩa lại như sau:
\renecommand{\thepage}{\roman{page}}
hoặc
\refreshcommand{\thesubsection}{\thesection.\arabic{
subsection}}
\@addtoreset {<số đếm 1>}{<số đếm 2>}
\counterwithin*{<số đếm 1>}{<số đếm 2>}
Đối với cả hai lệnh, nếu giá trị của <số đếm 2> thay đổi, giá
trị của <số đếm 1> đặt lại về 0.
\counterwithin{<số đếm 1>}{<số đếm 2>}
\numberwithin{<số đếm 1>}{<số đếm 2>} (trong amsmath.sty)
Đối với cả hai lệnh, nếu giá trị của <số đếm 2> thay đổi, giá
trị của <số đếm 1> được đặt lại và hiệu ứng của \the<số đếm 1>
là \the<số đếm 2>. \arabic{<số đếm 1>}.
\counterwithout{<số đếm 1>}{<số đếm 2>}
Sau đó, giá trị của <số đếm 1> không được đặt lại nếu <số đếm
2> thay đổi và Hiệu ứng của \the<số đếm 1> sẽ là \arabic{<số
đếm 1>}.
7 Ví dụ 9.5 8: ¤2
\newcounter{szamA} 44
£
886 = 2015 · 100
\newcounter{szamB}
\newcounter{szamC}
\setcounter{szamA}{2015}
\setcounter{szamB}{44}
\setcounter{szamC}{\value{szamA}}
\multiply\value{szamC} by \value{
szamB}
\divide\value{szamC} by 100
$\theszamC=\left[\theszamA\cdot
\frac{\theszamB}{100}\right]$
Kết quả là <true> hoặc <false> tùy thuộc vào việc hai ký
tự đầu tiên trong kết quả <biểu thức lôgic> có giống nhau hay
không.
7 Ví dụ 9.6 8: 2
\if11(a)\else(b)\fi (a)
(b)
\if12(a)\else(b)\fi
7 Ví dụ 9.7 8: 2
\def\parancs{11} (a)
\if\parancs(a)\else(b)\fi (b)
\def\parancs{12}
\if\parancs(a)\else(b)\fi
Kết quả là <true> hoặc <false> tùy theo kết quả của <mã 1> và
<mã 2> có giống nhau hay không.
7 Ví dụ 9.9 8: 2
\def\parancsA{aaa} (a)(d)
\def\parancsB{aaa}
\def\parancsC{ccc}
\ifx\parancsA\parancsB(a)\else(b)\fi
\ifx\parancsA\parancsC(c)\else(d)\fi
Kết quả là <true> hoặc <false> cho dù mã này nằm trong nội
dung tài liệu hay là ở phần mở đầu.
\ifnum<điều kiện số> <true> \else <false> \fi
Kết quả sẽ là <true> hoặc <false> tùy thuộc vào việc "điều kiện
số" có được đáp ứng hay không.
7 Ví dụ 9.10 8: 2
\ifnum\value{page}>10(a)\else(b)\fi (a)
Kết quả là <true> hoặc <false> tùy theo giá trị của <số nguyên>
là lẻ hay chẵn.
7 Ví dụ 9.11 8: 2
\ifodd\value{page}(a)\else(b)\fi (b)
Kết quả sẽ là <true> hoặc <false> tùy thuộc vào việc đáp ứng
<điều kiện độ dài> hãy xem:
7 Ví dụ 9.12 8: 2
\ifdim 1in<2cm(a)\else(b)\fi (b)
(a)
\ifdim\textwidth<\textheight(a)\else(
b)\fi
Kết quả là <true> hoặc <false> tùy thuộc vào việc chúng ta có
đang ở chế độ toán học hay không.
7 Ví dụ 9.13 8: 2
$2\ifmmode^4\else\textsuperscript5\fi 24 25
$
2\ifmmode^4\else\textsuperscript5\fi
Kết quả là <true> hoặc <false> tùy thuộc vào việc <lệnh> có
được xác định hay không.
7 Ví dụ 9.14 8: 2
(\ifdefined\section a\else b\fi) (a)
Kết quả là <true> hoặc <false> tùy thuộc vào việc gói babel.sty
hoặc polyglossia.sty có tải “vào” hay không.
\if@twoside <true> \else <false> \fi
Kết quả là <true> hoặc <false> tùy thuộc vào việc bạn có tải
lớp tài liệu với tùy chọn hai mặt hay không.
\ifcase<số nguyên> <0>\or<1>\or<2>\or...\or<n>\else <n +> \
fi
Ví dụ, nếu giá trị của <số nguyên> là 2, thì kết quả là <2>, trong
khi nếu nó lớn hơn <n>, thì <n +>.
7 Ví dụ 9.15 8: 2
\ifcase\value{page} zero \or một nhiều
\or hai \else nhiề
u \fi
7 Ví dụ 9.16 8: 2
\begingroup chủ nhật
\newcounter{szam}\setcounter{szam}{7}
\ifcase\value{szam}\or
thứ hai \or thứ ba \or thứ tư \or thứ
năm
\or thứ sáu \or thứ bảy \or chủ nh
ật \fi
\endgroup
Định nghĩa một lệnh mới kiểu \if ... \else ... \fi
\newif\if<tên lệnh>
\<tên lệnh>true
(Điều này có hiệu ứng cục bộ, có nghĩa là được đưa ra trong
một khối, hiệu ứng này không có hiệu lực bên ngoài khối. Bên
ngoài một khối, nó sẽ có ảnh hưởng, tức là nó sẽ trở thành toàn
cục, nếu bạn đặt lệnh \global trước nó.) thì
\if<tên lệnh> <true> \else <false> \fi
(Điều này có tác dụng cục bộ. Để sử dụng toàn cầu, hãy đặt
trước lệnh \global.)
7 Ví dụ 9.17 8: 2
\newif\ifproba (b)(c)(f)
\ifproba(a)\else(b)\fi
\probatrue\ifproba(c)\else(d)\fi
\probafalse\ifproba(e)\else(f)\fi
Kết quả là <true> hoặc <false> tùy thuộc vào việc ký tự đầu
tiên tiếp theo có phải là <ký tự> hay không.
7 Ví dụ 9.18 8: 2
\makeatletter (ac)
(\@ifnextchar c {a}{b}c)
\makeatother
\@ifstar{<true>}{<false>}
Kết quả là <true> hoặc <false> tùy thuộc vào ký tự đầu tiên
tiếp theo có phải là * hay không. Nếu *, nó hấp thụ nó.
7 Ví dụ 9.19 8: 2
\makeatletter (a) (bx)
(\@ifstar{a}{b}*) (\@ifstar{a}{b}x)
\makeatother
Kết quả là <true> hoặc <false> tùy theo việc <tên lệnh chung>
là không xác định hoặc được xác định.
7 Ví dụ 9.20 8: 2
\makeatletter (b)
(\@ifundefined{section}{a}{b})
\makeatother
Kết quả là <true> hoặc <false> tùy thuộc vào việc bạn có tải
lớp tài liệu <class> hay không. Chỉ có thể được sử dụng trong
phần mở đầu!
\@ifpackageloaded{<gói lệnh>} {<true>} {<false>}
Kết quả là <true> hoặc <false> cho dù <gói lệnh> đã được tải
trước đó hay chưa. Chỉ có thể được sử dụng trong phần mở đầu!
\IfLanguageName{<ngôn ngữ>} {<true>} {<false>} (trong
iflang.sty)
Kết quả là <true> hoặc <false> tùy thuộc vào việc <ngôn ngữ> có
hoạt động hay không.
\IfFileExists {<tệp>} {<true>} {<false>}
Kết quả là <true> hoặc <false> tùy thuộc vào việc <tệp> có tồn
tại hay không.
\InputIfFileExists{<file>} {<true>} {<false>}
Nếu <file> tồn tại, kết quả là <true> và sau đó đọc <false>, nếu
không kết quả là <false>
Sử dụng gói ifthen.sty
\ifthenelse{<điều kiện>} {<true>} {<false>} (trong ifthen
.sty)
Kết quả là <true> hoặc <false> tùy theo <điều kiện> là đúng
hay sai.
\isodd{<một số>} (trong ifthen.sty)
Giá trị của nó đúng hay sai tùy theo giá trị của <một số> là lẻ
hay chẵn.
\lengthtest{<điều kiện độ dài>} (trong ifthen.sty)
Giá trị của nó là đúng hay sai tùy theo <điều kiện độ dài> là
đúng hay sai.
\equal{<text1>}{<text2>} (trong ifthen.sty)
Giá trị của nó sẽ đúng hoặc sai tùy thuộc vào việc <text1> và
<text2> giống nhau hay sem.
\not <điều kiện> (trong ifthen.sty)
Giá trị của nó là đúng hay sai tùy theo <điều kiện> là sai hay
đúng.
<điều kiện 1> \and <điều kiện 2> (trong ifthen.sty)
Giá trị của nó chỉ đúng nếu cả <điều kiện 1> và <điều kiện 2>
đều đúng.
<điều kiện 1> \or <điều kiện 2> (trong ifthen.sty)
Giá trị của nó chỉ đúng nếu một trong <điều kiện 1> hoặc <điề
u kiện 2> là true.
\(<điều kiện>\) (trong ifthen.sty)
Xác định một công tắc logic mới. Mặc định này sai.
\setboolean{<biến lôgic>}{<giá trị lôgic>} (trong ifthen
.sty)
Đặt giá trị của <biến lôgic>. Giá trị lôgic có thể sai hoặc đúng
(thật).
7 Ví dụ 9.22 8: 2
\ifthenelse{\lengthtest{ (a)
\textwidth<\textheight}}{(a)}{(b)}
7 Ví dụ 9.23 8: 2
\ifthenelse{\equal{haj}{háj}}{(a)}{(b (b)
)}
7 Ví dụ 9.24 8: 2
\newboolean{kapcsolo} (b) (c) (f)
\ifthenelse{\boolean{kapcsolo}}{(a)}{
(b)}
\setboolean{kapcsolo}{true}
\ifthenelse{\boolean{kapcsolo}}{(c)}{
(d)}
\setboolean{kapcsolo}{false}
\ifthenelse{\boolean{kapcsolo}}{(e)}{
(f)}
Thực thi <mã lệnh> miễn là tồn tại <điều kiện số>.
7 Ví dụ 9.25 8: 2
\begingroup 1 2 3 4 5 6 7 8 9 10
\makeatletter
\newcounter{szamc}
\@whilenum\theszamc<10
\do{\stepcounter{szamc}\theszamc\ }
\makeatother
\endgroup
Sử dụng lệnh \@for trong nội dung tài liệu xung đột với tùy
chọn defaults = english trong tệp english.ldf. (Không có vấn
đề gì với phần mở đầu.) Một giải pháp khả thi là xác định lại
lệnh \@for trong nội dung tài liệu:
\makeatletter
\long\def\@for#1:=#2\do#3{%
\expandafter\def\expandafter\@fortmp\expandafter{#2}%
\ifx\@fortmp\@empty \else
\expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}
\makeatother
trong đó <mã lệnh> được thay thế bằng các mục danh list #1.
7 Ví dụ 9.27 8: 2
\renewcommand{\do}[1]{Ngày #1.} Ngày đứng
\docsvlist{đứng dậy, ổn định} dậy.Ngày ổn định.
Các hướng dẫn chu trình sau có thể được sử dụng mà không
có bất kỳ hạn chế nào:
\loop<code1> \ifnum<điều kiện số> <code2> \repeat
7 Ví dụ 9.28 8
\newcounter{szamw}
\loop\theszamw \ifnum\value{szamw}<9\stepcounter{szamw}\
repeat
: 2
0123456789
7 Ví dụ 9.29 8
\newcounter{szamz}\setcounter{szamz}{2}
\whiledo{\value{szamz}<5}{\theszamz\stepcounter{szamz}}
: 2
234
7 Ví dụ 9.30 8
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
342 Chương 9. Lập trình trong LATEX
<số tham số> có thể lên đến 9. Ví dụ: trong <mã lệnh>, bạn có
thể xem tham số 2 là #2.
7 Ví dụ 9.31 8
\newcommand{\ora}[2]{#1\textsuperscript{\underline{#2}}}
\ora{12}{45}
: 2
1245
Một lệnh tùy chọn cũng có thể được định nghĩa:
\newcommand{<lệnh mới>}[<lệnh mới>][<mặc định>]{<mã lệnh>}
Khi đó, tham số đầu tiên được coi là một tùy chọn với giá trị
mặc định là <mặc định>.
7 Ví dụ 9.32 8
\newcommand{\ora}[2][12]{#1\textsuperscript{\underline{#2}}
}
\ora{45}, \ora[13]{45}
: 2
1245 , 1345
Nếu bạn muốn xác định lại một lệnh hiện có bằng \
newcommand, trình biên dịch sẽ chỉ ra điều này và dừng lại. Điều
này rất hữu ích vì nó tránh được việc xác định lại một cách
ngẫu nhiên.
Nếu bạn muốn xác định lại nó một cách có chủ ý, hãy làm
như vậy với \refreshcommand, nó sẽ được sử dụng chính xác như
\newcommand.
Nếu bạn chỉ muốn xác định một lệnh nếu nó chưa tồn tại,
nhưng không có ý định xác định lại nó nếu nó tồn tại, hãy sử
7 Ví dụ 9.33 8
\newcommand{\greekalph}[1]{\ensuremath{%
\ifcase\value{#1}\or\alpha\or\beta\or\gamma\or\delta%
\or\varepsilon\or\zeta\or\eta\or\vartheta\or\iota\or\kappa%
\or\lambda\or\mu\or\nu\or\xi\or\varphi\or\varpi\or\varrho%
\or\varsigma\or\tau\or\upsilon\or\chi\or\psi\or\omega\fi}}
\newcounter{szamd}
\setcounter{szamd}{4}
\greekalph{szamd}
: 2
δ
7 Ví dụ 9.34 8
\newcommand{\vektor}[9]{%
\newcommand{\koordA}{#1}\newcommand{\koordB}{#2}%
\newcommand{\koordC}{#3}\newcommand{\koordD}{#4}%
\newcommand{\koordE}{#5}\newcommand{\koordF}{#6}%
\newcommand{\koordG}{#7}\newcommand{\koordH}{#8}%
\newcommand{\koordI}{#9}\vektorfolyt}
\newcommand{\vektorfolyt}[2]{%
\newcommand{\koordJ}{#1}\newcommand{\koordK}{#2}%
$(\koordA,\koordB,\koordC,\koordD,\koordE,\koordF,
\koordG,\koordH,\koordI,\koordJ,\koordK)$}
\vektor{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}
tọa độ thứ hai \koordB.
: 2
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) tọa độ thứ hai 2.
7 Ví dụ 9.35 8
\newcommand{\irogep}[1]{\renewcommand{\emph}[1]{\underline{
##1}}%
\texttt{#1}}
\irogep{Hòn đá \emph{nâng lên}.}
: 2
Hòn đá nâng lên.
Nó phải được chỉ định trong <đối số chỉ ra> cho các đối số của
<lệnh mới> số lượng, loại, thứ tự. Các tham số được ghi vào đối
số - tương tự như cho đến nay - #1, #2, ..., #9 có thể được
tham chiếu trong <mã lệnh>. Các đối số Các thông số kỹ thuật
•m R
chỉ ra loại có thể như sau:
Đối số bắt buộc là một mã thông báo duy nhất hoặc
nhiều mã thông báo giữa { và }.
7 Ví dụ 9.36 8
\NewDocumentCommand{\ora}{mm}{#1\textsuperscript{\underline
{#2}}}
\ora{13}{45}
: 2
R
1345
• r<token1><token2> Tương tự như m, nhưng sau đó các
7 Ví dụ 9.37 8
\NewDocumentCommand{\ora}{mr()}{#1\textsuperscript{\
underline{#2}}}
\ora{13}(45)
: 2
R
1345
• O{<mặc định>}Đối số tùy chọn được chỉ định giữa [và].
Nếu bạn không nhập nó, <mặc định> sẽ có hiệu lực.
7 Ví dụ 9.38 8
\NewDocumentCommand{\ora}{mO{00}}{#1\textsuperscript{\
underline{#2}}}
\ora{13} \ora{13}[45]
: 2
R
1300 1345
•v Nguyên văn đối số. Điều này cho phép bạn xác định
các lệnh tương tự như \lstinline, nhưng ở đây {và} cũng có thể
chứa các dấu phân cách.
7 Ví dụ 9.39 8
\NewDocumentCommand{\myverb}{v}{\color{red}\texttt{#1}}
\myverb{\color{red}\texttt{#1}}
\myverb+\lstinline|\par|+
: 2
\color{red}\texttt{#1} \lstinline|\par|
Tương tự như lệnh \newcommand*, các đặc tả này có thể được
sử dụng để xác định các đối số đoạn đơn. Nếu bạn viết dấu +
trước bất kỳ dấu nào trong số chúng, đối số có thể bao gồm một
số đoạn (+m, +r(), +O{1}, +v, v.v.). Ví dụ
7 Ví dụ 9.40 8
\NewDocumentCommand{\foo}{+m}{\color{red} #1}
\foo{văn bản \par văn bản}
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
346 Chương 9. Lập trình trong LATEX
văn bản
văn bản
Ngoài ra còn có một thông số kỹ thuật đặc biệt giúp bạn dễ
dàng xác định phiên bản sao của lệnh. Đối với điều này, đặc
điểm kỹ thuật đầu tiên phải là s. Sau đó, nó được đặt trong
<mã>
\IfBooleanTF{#1}{<true>} {<false>}
trong trường hợp là một lệnh, phiên bản dấu hoa thị của
lệnh định nghĩa trên được biểu thị là "true" và ngược lại là
"false".
7 Ví dụ 9.41 8
\NewDocumentCommand{\ora}{smm}{%
\IfBooleanTF{#1}{#2\textsuperscript{\underline{#3}}}{#2:#3}
}
\ora{13}{45}
\ora*{13}{45}
: 2
13:45 1345
Nếu bạn muốn xác định lại một lệnh hiện có với \
NewDocumentCommand, thì quá trình biên dịch sẽ dừng lại do lỗi.
Nếu bạn muốn xác định lại một lệnh có chủ đích, hãy làm như
vậy với \RenewDocumentCommand. Nếu bạn chỉ muốn xác định một
lệnh nếu nó chưa tồn tại, nhưng nếu bạn không muốn xác
định lại nó, hãy sử dụng lệnh \ProvideDocumentCommand. Nếu
bạn muốn xác định một lệnh trong mọi trường hợp, cho dù nó
đã tồn tại hay chưa, hãy sử dụng lệnh \DeclareDocumentCommand.
Chúng phải được sử dụng giống như lệnh \NewDocumentCommand.
Lệnh \def và \edef : Bạn cũng có thể tạo các lệnh mới bằng
lệnh \def, lệnh này cũng có thể được sử dụng trong Plain TEX,
nhưng điều này không cho biết bạn có đang định nghĩa lại một
lệnh hiện có hay không.
7 Ví dụ 9.42 8
\def\ora#1#2{#1\textsuperscript{\underline{#2}}}
\ora{12}{45}
: 2
Nguyễn Hữu Điển https://www.facebook.com/groups/vietex/
9.4. Định nghĩa macro 347
1245
7 Ví dụ 9.43 8
\def\ora(#1.#2){#1\textsuperscript{\underline{#2}}}
\ora(12.45)
: 2
1245
7 Ví dụ 9.44 8
\def\FirstUppercase#1{\MakeUppercase#1}
\FirstUppercase{Nguyễn} \FirstUppercase{{á}nh}
: 2
Nguyễn Ánh
Đối số của lệnh được định nghĩa bởi \def chỉ có thể chứa một
đoạn, như trong trường hợp của \newcommand*. Để giải quyết
hạn chế này, hãy nhập \long vào trước \def. Trong các định
nghĩa nội bộ ở đây cũng có ##1, ##2, v.v. chúng ta sử dụng các
liên kết. Nếu bạn muốn macro trong định nghĩa lệnh hoạt động
theo các giá trị tại thời điểm định nghĩa, hãy sử dụng \edef.
7 Ví dụ 9.45 8
\newcounter{szamx}
\def\szamkiir{\theszamx}
\edef\kiirszam{\theszamx}
\setcounter{szamx}{1}
\szamkiir\kiirszam
: 2
10
Nếu bạn không muốn macro hiển thị với các giá trị ở định
nghĩa khi bạn sử dụng \edef, hãy nhập \noexpand.
7 Ví dụ 9.46 8
\newcounter{szamv}
\edef\kiirszam{\noexpand\theszamv\theszamv}
\setcounter{szamv}{1}
\kiirszam
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
348 Chương 9. Lập trình trong LATEX
10
Các ví dụ thêm.
1. Tham số thứ hai của lệnh \ora được định nghĩa trong ví
dụ sau là tùy chọn, với giá trị mặc định là 00:
7 Ví dụ 9.47 8
\makeatletter
\def\@ora#1[#2]{#1\textsuperscript{#2}\ }
\def\ora#1{\@ifnextchar[{\@ora#1}{\@ora#1[00]}}
\makeatother
\ora{11}
\ora{11}[15]
: 2
1100 1115
2. Tham số đầu tiên của lệnh \ result được định nghĩa trong
ví dụ sau là tùy chọn, giá trị mặc định là tham số thứ hai:
7 Ví dụ 9.48 8
\makeatletter
\def\@eredmeny[#1]#2{\textbf{#1}\,:\,\textbf{#2}}
\def\@@eredmeny#1{\@eredmeny[#1]{#1}}
\def\eredmeny{\@ifnextchar[{\@eredmeny}{\@@eredmeny}}
\makeatother
\eredmeny{1}\\
\eredmeny[5]{0}
: 2
1:1
5:0
3. Chúng ta không cần tính toán số tiền bằng các macro
sau:
7 Ví dụ 9.49 8
\newcounter{szumma}
\def\szummatag#1{\addtocounter{szumma}{#1}#1}
\def\szumma{\theszumma\setcounter{szumma}{0}}
: 2
Tổng của 1234 và 367 là 1601.
Trình bầy đẹp hơn
7 Ví dụ 9.50 8: 2
\def\szummatag#1{\addtocounter{szumma
}{#1}#1}
12345
\def\szumma{\theszumma\setcounter{ 1234
szumma}{0}}
\begin{tabular}{@{}r@{}r@{}} + 123
&\szummatag{12345}\\
15303
&\szummatag{1234}\\
+&\szummatag{123}\\
\hline
&\szumma
\end{tabular}
7 Ví dụ 9.51 8
\newcounter{checknum}
\def\ifdivisible#1#2#3#4{%
\setcounter{checknum}{#1}%
\divide\value{checknum}by#2\relax%
\multiply\value{checknum}by#2\relax%
\ifnum\value{checknum}=#1\relax#3\else#4\fi}
7 Ví dụ 9.52 8
\makeatletter
\newlength{\unit}
\setlength{\unit}{1cm}
\def\lentounit#1{\strip@pt\dimexpr#1*\p@/\unit}
\makeatother
1\,inch = \lentounit{1in}\,cm
: 2
1 inch = 2.54 cm
6. Ví dụ sau đây là của Donald Ervin Knuth (xem [4]):
Định nghĩa lệnh \primes{<số>}, in ra <số> nguyên tố đầu
tiên, trong đó <số> ít nhất là 2. Ví dụ: 50 số nguyên tố đầu tiên
có thể được liệt kê như sau:
7 Ví dụ 9.53 8
\newif\ifprime \newif\ifunknown
\newcount\n \newcount\p \newcount\d \newcount\a
\def\primes#1{2,~3\n=#1 \advance\n by-2 \p=5
\loop\ifnum\n>0 \printifprime\advance\p by2 \repeat}
\def\printp{, \number\p \advance\n by -1 }
\def\printifprime{\testprimality \ifprime\printp\fi}
\def\testprimality{{\d=3 \global\primetrue
\loop\trialdivision \ifunknown\advance\d by2 \repeat}}
\def\trialdivision{\a=\p \divide\a by\d
\ifnum\a>\d \unknowntrue\else\unknownfalse\fi
\multiply\a by\d
\ifnum\a=\p \global\primefalse\unknownfalse\fi}
\primes{50}
: 2
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127,
131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191,
193, 197, 199, 211, 223, 227, 229
Lệnh mở rộng \expandafter
1. Khi xác định một lệnh với \edef, chúng ta thấy rằng việc
thực thi ngay lập tức một macro có thể bị ngăn chặn bằng lệnh
\noexpand. Một lệnh khác để kiểm soát macro được gọi là
\expandafter
7 Ví dụ 9.54 8
\def\a{\b}
\def\b{c}
\a
\string\a
\expandafter\string\a
: 2
c\a\b
Sau đó, giải thích của \a (đầy đủ cả bên trong) c. Đối với
\string\a, tác dụng \string lên \ sẽ xuất hiện trong pdf theo
sau là một chữ cái. \expandafter\string\a Trong trường hợp
này, \expandafter bỏ qua lệnh \string theo sau nó sau \a mở
rộng lệnh đến bên trong \b. Sau đó đặt chuỗi \string đã bỏ qua
trước nó. Vì vậy, bây giờ \string\b sẽ được trích xuất, đó là \b.
Vì vậy, kết quả của mã trước đó là c\a\b như trên.
2. Ví dụ sau dành cho lệnh \newgeometry trong gói hình học
geometry.sty, đó là mong đợi cài đặt hình học trang tính như
được giải thích. Ví dụ
\newgeometry{top=3cm}
Nếu top = 3cm được lưu trữ trong một lệnh, lệnh này không
thể được nhập trực tiếp vào \newgeometry vì nó không được giải
thích bởi \newgeometry trước khi phân tích cú pháp. Đó là, đoạn
mã sau sẽ chỉ ra lỗi:
\def\foo{top=3cm}
\newgeometry{\foo}
Trong giải pháp này, cần phải có \expandafter đầu tiên vì nếu
không \newgeometry sẽ coi \expandafter-t tiếp theo là một đối
số, điều này sẽ dẫn đến lỗi. Hoạt động của đoạn mã trước
Nhưng trong trường hợp này, một vòng lặp vô hạn được tạo ra
khi \foo được phân tích cú pháp, vì vậy quá trình biên dịch sẽ
dừng lại với lỗi. Mã có thể được sửa chữa như sau
\def\foo{a}
\expandafter\def\expandafter\foo\expandafter{\foo b}
\foo
Ban đầu, biểu thức cho \foo là chữ a, nhưng sau dòng thứ
hai, nó được mở rộng bằng chữ b, tức là ab là kết quả. Hãy xem
tại sao. Khi bạn lần đầu tiên hiển thị \expandafter, bạn bỏ qua
lệnh \def và sau đó hiển thị lệnh \expandafter tiếp theo. Thao
tác này sẽ bỏ qua lệnh \foo sau nó và sau đó mở rộng lệnh sau
\expandafter. Thao tác này sẽ bỏ qua { token sau nó và sau đó
mở rộng lệnh \foo sau nó, bây giờ là chữ cái "a". Sau đó, lệnh
mở rộng thứ ba đặt mã thông báo { đã bỏ qua ở phía trước nó.
Lệnh \expandafter thứ hai đặt lệnh đã bỏ qua \foo trước nó,
và sau đó \expandafter đầu tiên đặt lệnh đã bỏ qua \def ở phía
trước nó. Vì vậy, đây là bản dịch:
\def\foo{a
Mã b} sau đó được đặt sau nó, vì vậy nó sẽ được dịch trong
vòng thứ hai:
\def\foo{ab}
Kết quả là, biểu thức cho \foo sẽ là ab.
Trong ví dụ sau, giả sử các lệnh \aa, \bb và \cc đã được xác
định trước đó. Tại
\def\b{\bb}
\def\c{\cc}
sau
\expandafter\expandafter\expandafter\aa\expandafter\b\c
tương đương với
\aa\bb\cc
Hãy xem tại sao. Khi phần \expandafter đầu tiên được giải
thích, nó sẽ bỏ qua phần mở rộng sau nó, và sau đó mở rộng
\expandafter sau nó. Thao tác này sẽ bỏ qua lệnh \aa sau nó và
sau đó mở rộng lệnh \expandafter sau nó. Thao tác này sẽ bỏ
qua lệnh \b sau và sau đó mở rộng lệnh \c tiếp theo, \cc, ở mức
bên trong. Sau đó \expandafter thứ tư đặt lệnh \b đã bỏ qua
trước nó, \expandafter thứ ba đặt lệnh \a bị bỏ qua trước nó, và
\expandafter đầu tiên đặt lệnh thứ hai đã bỏ qua \expandafter
ở trước nó. Vì vậy, đây là bản dịch:
\expandafter\aa\b\cc
Trong lần chạy tiếp theo, khi mở rộng \expandafter, nó sẽ
bỏ qua lệnh \aa sau nó và sau đó mở rộng \b sau nó ở một mức,
là \bb. Sau đó, nó đặt \aa đã bỏ qua ở phía trước nó
\aa\bb
Sau đó, nó đặt \cc sau nó. Vì vậy, trong vòng thứ ba, bạn sẽ
giải thích điều này:
\aa\bb\cc
Chúng ta giao việc phân tích ví dụ cuối cùng cho Người đọc.
Giả sử các lệnh \aa, \bb, \cc và \dd đã được xác định trước đó.
Tại
\def\b{\bb}
\def\c{\cc}
\def\d{\dd}
Sau
\expandafter\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\aa
\expandafter\expandafter\expandafter\b
\expandafter\c\d
\makeatletter
\let\old@section\section
\def\@szakasz[#1]#2{\old@section[#1]{\MakeUppercase{#2}}}
\def\@@szakasz#1{\old@section*{\MakeUppercase{#1}}}
\def\@@@szakasz#1{\@szakasz[#1]{#1}}
\def\section{\@ifnextchar[{\@szakasz}{\@ifstar{\@@szakasz}{
\@@@szakasz}}}
\makeatother
7 Ví dụ 9.55 8: 2
\def\foo{A} BA
{\def\foo{B}\foo}
\foo
Nếu bạn viết \global\def thay vì \def, hoặc một phiên bản
ngắn của nó, \gdef, thì hiệu ứng sẽ là toàn cục, nghĩa là phạm
vi của nó sẽ vẫn nằm ngoài khối.
7 Ví dụ 9.56 8: 2
\def\foo{A} BB
{\gdef\foo{B}\foo}
\foo
cách có thể được gọi. Nếu "tên macro" không được xác định,
bạn sẽ không nhận được cảnh báo hoặc thông báo lỗi.
7 Ví dụ 9.57 8: 2
\makeatletter Chữ đậm
\@namedef{bold}#1{\textbf{#
1}}
\@nameuse{bold}{Chữ đậm}
\makeatother
7 Ví dụ 9.58 8: 2
\makeatletter Chữ đậm Chữ nghiêng
\newcounter{foo}
\stepcounter{foo}
\@namedef{foo\thefoo}#1{\
textbf{#1}}
\stepcounter{foo}
\@namedef{foo\thefoo}#1{\
textit{#1}}
\@nameuse{foo1}{Chữ đậm}
\@nameuse{foo2}{Chữ nghiêng
}
\makeatother
\<command> hiện có có thể được định nghĩa lại với điều này. Lệnh
được xác định lại sẽ mạnh. Nó cũng có một phiên bản sao.
\providerobustcmd{<command>}[<số tham số>][<default>]{<mã l
ệnh>}
(trong etoolbox.sty)
Đối với \<command> không xác định, nó thực hiện tương tự như
\newrobustcmd. Nếu \<command> đã tồn tại, nó không có tác dụng
gì. Nó cũng có một phiên bản sao.
\robustify {<command>} (trong etoolbox.sty)
Chuyển đổi \<command> thành một lệnh mạnh với cơ chế bảo vệ
ϵ-TeX. Nếu \<command> có một đối số, nó sẽ không được chỉ định
trong đó.
\protecting{<mã lệnh>} (trong etoolbox.sty)
Tương tự như \cslet, nhưng trong đối số thứ hai này là <
macroname>.
Tương tự như \cslet, nhưng trong cả hai đối số này đều là một
tên macro.
\undef<command> (trong etoolbox.sty)
Làm cho <command> không được xác định. Đây là một lệnh
mạnh.
\gundef<command> (trong etoolbox.sty)
<macroname> trở thành không xác định. Đây là một lệnh mạnh.
\csgundef{<macronname>} (trong etoolbox.sty)
lệnh nối <mã lệnh> vào cuối định nghĩa <command>. Nếu điều này
thành công, nó thậm chí sẽ giải thích mã <thành công>, nếu
không thì mã nối <không thành>.
7 Ví dụ 9.60 8: 2
\def\EKE{Một loài hoa} Một loài hoa
\EKE\\ Một loài hoa đẹp
\apptocmd{\EKE}{ đẹp}{}{}
\EKE
Bạn cũng có thể nối mã vào đầu định nghĩa lệnh hiện có
\pretocmd{<command>}{<mã lệnh>}{<nếu nối thành công>}}{<khô
ng thành>}
(trong etoolbox.sty)
7 Ví dụ 9.61 8: 2
\def\EKE{ đẹp} đẹp
\EKE\\ Một loài hoa đẹp
\pretocmd{\EKE}{Một loài
hoa}{}{}
\EKE
Điều này thay thế mã "cái gì" đầu tiên trong định nghĩa "lệnh"
bằng mã "cái gì". Nếu điều này thành công, nó thậm chí sẽ giải
thích <mã thành công>, nếu không thì mã <không thành>. Ví dụ
7 Ví dụ 9.62 8: 2
\def\EKE{Một loài hoa} Một loài hoa
\EKE\\ Một loài cây
\patchcmd{\EKE}{hoa}{cây}{}
{}
\EKE
\newcommand{\kod}{
\SaveVerb[
aftersave={mã:
\UseVerb[showspaces,
formatcom={\color{red}\rmfamily\bfseries},
]{kod}
}
]{kod}
}
Sau đó, lệnh \kod có thể được sử dụng giống hệt như \
lstinline, chỉ là không có phiên bản dấu sao. Ví dụ
7 Ví dụ 9.63 8: 2
\kod+$ $ \+ mã: $$\
Lệnh với một khóa mới = tùy chọn loại giá trị
Một ví dụ về lệnh như vậy là tiếp theo:
\includegraphics[width=5cm]{imagefile}
Trong trường hợp này, trong tùy chọn width = 5cm, thông
thường gọi chiều rộng là khóa và 5cm là giá trị của khóa. Bạn
cũng có thể xác định loại lệnh này bằng một trong các gói sau:
keyval2e, expkv, expkv-def, expkv-cs, simplekv. Chúng ta sẽ
chỉ đối phó với cái sau bây giờ. Để sử dụng nó, bạn cần biết các
lệnh sau:
\setKVdefault[<setname>]{<key1>=<value1>,<key2> = <value2>,
...}
(trong simplekv.sty)
kết quả là <true> hoặc false, với <value1> true hoặc false. Các
mặc định chính có thể được đặt lại
\setKV[<setname khai báo>] {<key1> = <value1>, <key2> = <
value2>, ...}
(trong simplekv.sty)
bằng lệnh. Nếu một khóa không có trong các tùy chọn, nó vẫn
giữ nguyên giá trị hiện tại. Để trở về các giá trị mặc định, vấn
đề
\restoreKV[<resetname>] (trong simplekv.sty)
chỉ huy.
7 Ví dụ 9.64 8
\setKVdefault[pelda]{font type=\bfseries,text={Hoa hồng},
frame}
1. \useKV[pelda]{text},
{\useKV[pelda]{font type}\useKV[pelda]{text}},
\ifboolKV[pelda]{frame}{\fbox{\useKV[pelda]{text}}}{\useKV[
pelda]{text}}
\setKV[pelda]{frame=false}
2. \ifboolKV[pelda]{frame}{\fbox{\useKV[pelda]{text}}}
{\useKV[pelda]{text}}
\restoreKV[pelda]
4. \useKV[pelda]{text},
{\useKV[pelda]{font type}\useKV[pelda]{text}},
\ifboolKV[pelda]{frame}{\fbox{\useKV[pelda]{text}}}{\useKV[
pelda]{text}}
: 2
1. Hoa hồng, Hoa hồng, Hoa hồng
2. Hoa hồng
3. HOA HỒNG
4. Hoa hồng, Hoa hồng, Hoa hồng
Biết tất cả những điều này, bây giờ thật dễ dàng để tạo
một lệnh với tùy chọn loại khóa = giá trị mới. Định nghĩa lệnh
\frametxt, lệnh này có các tác dụng sau:
7 Ví dụ 9.65 8
\setKVdefault[frame]{sep=3pt,line width=0.5pt,style=\
bfseries,inline}
\newcommand\frametxt[2][]{%
\restoreKV[frame]%
\setKV[frame]{#1}%
\setlength{\fboxsep}{\useKV[frame]{sep}}%
\setlength{\fboxrule}{\useKV[frame]{line width}}%
\ifboolKV[frame]{inline}{}{\begin{center}}%
\fbox{\useKV[frame]{style}#2}%
\ifboolKV[frame]{inline}{}{\end{center}}%
}
\frametxt{Hoa Hồng-1}
\frametxt[sep=5pt,style=\itshape]{Hoa Hồng-2}
\frametxt[style=\huge,inline=false]{Hoa Hồng-3}
\frametxt[line width=2pt]{Hoa Hồng-4}
: 2
Hoa Hồng-1 Hoa Hồng-2
Hoa Hồng-3
Hoa Hồng-4
Ngoài các môi trường hiện có của bạn trong LATEX, bạn
cũng có thể xác định môi trường của riêng mình bằng lệnh
\newenvironment:
\newenvironment{<tên>}[<Số đối số>][<mặc định>]{<mở mã>}{<đ
óng mã>}
<mặc định> Giá trị mặc định của đối số đầu tiên. Nếu điều
này được đưa ra, đối số đầu tiên sẽ là một tùy chọn.
<mở mã> Thực thi khi môi trường được mở.
<đóng mã> Thực thi khi môi trường đóng. Nó không được
chứa các tham chiếu #<n>, tức là, các đối số cho môi trường.
Bạn không thể xác định môi trường <tên> nếu môi trường
đó đã tồn tại hoặc lệnh \<tên> tồn tại. Tuy nhiên, nó có thể
được xác định nếu một bộ đếm <tên> đã tồn tại. Nếu bạn muốn
xác định lại một môi trường hiện có, bạn có thể làm như vậy
bằng lệnh \renewenvironment. Sử dụng điều này cũng giống
như sử dụng \renewenvironment.
Ví dụ: khi bạn sử dụng lệnh \newenvironment để xác định
một môi trường <tên>, bạn thực sự đang xác định hai lệnh:
\<tên> =\begin{<tên>}
\end<tên>=\end{<tên>}
Điều này giải thích tại sao không thể có tham chiếu #<n> trong
<mã đóng>.
Hãy xem một số ví dụ.
\newenvironment{rend}[1][Chương trình]
{\noindent\textbf{#1}\\[2mm]\begin{tabular}{|r|p{6cm}|}\
hline}
{\\\hline\end{tabular}\par}
Khi đó
7 Ví dụ 9.66 8
\begin{rend}
6:30 & Sau bữa sáng tập thể dục, giặt là và ăn uống. \\
7:30 & Bắt đầu làm việc. \\
\dots & \dots
\end{rend}
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
366 Chương 9. Lập trình trong LATEX
Chương trình
7 Ví dụ 9.67 8
\begin {rend} [Thời gian biểu]
8:00 & Báo cáo hàng tuần, nhập nhật ký. \\
8:02 & Kiểm tra, đánh giá bài tập về nhà. \\
\dots & \dots
\end{rend}
: 2
Thời gian biểu
Khi đó
7 Ví dụ 9.68 8
\begin {rend}{Thời gian biểu}
8:00 & Báo cáo hàng tuần, nhập nhật ký. \\
8:02 & Kiểm tra, đánh giá bài tập về nhà. \\
\dots & \dots
\end{rend}
: 2
Nguyễn Hữu Điển https://www.facebook.com/groups/vietex/
9.5. Định định môi trường 367
Lợi thế của việc sử dụng các môi trường là nội dung của
chúng không được coi là một đối số, do đó sẽ có ít hạn chế
hơn đối với chúng. Tuy nhiên, đôi khi có thể cần sử dụng
bên trong của môi trường trong định nghĩa về môi trường.
\newenvironment không thích hợp để xác định một môi trường
như vậy. Trong trường hợp này, bạn có thể sử dụng:
\NewEnviron{<tên>}[<số đối số][<mặc định>]{<mã lệnh}[<mã kế
t thúc>]
(trong environ.sty)
7 Ví dụ 9.69 8
\NewEnviron{teszt}[2][\today]{%
\fbox{\parbox{5.5cm}{\textbf{#2}\par\BODY\par(#1)}}}
Tiêu đề
Tiêu đề
Văn bản
Văn bản
Văn bản
Văn bản
(Ngày 28 tháng 10 năm
(hôm qua)
2022)
Trong <đặc tả đối số>, bạn có thể chỉ định các đối số chính
xác như cách bạn làm với lệnh \NewDocumentCommand. Các đối
số, không giống như lệnh \newenvironment, có thể được tham
chiếu không chỉ trong <mã mở> mà còn trong mã <mã đóng>.
Các đối số phải được chỉ định sau \begin{<tên>}. Bạn cũng có
thể viết * ở cuối <tên>, vì vậy bạn có thể xác định phiên bản sao
của một môi trường. Nếu bạn cũng muốn coi phần bên trong
(phần thân) của môi trường như một đối số, hãy nhập đặc tả b
(hoặc + b) cuối cùng trong <đặc tả đối số>. Ví dụ
\NewDocumentEnvironment{teszt}{mO{\today}+b}{%
\fbox{\parbox{5cm}{\textbf{#1}\par#3\par(#2)}}}{}
7 Ví dụ 9.70 8
\begin {teszt} {Tiêu đề}
Văn bản \par Văn bản
\end {teszt}
\begin {teszt}{Tiêu đề} [hôm qua]
Văn bản \par Văn bản
\end {teszt}
: 2
Nguyễn Hữu Điển https://www.facebook.com/groups/vietex/
9.5. Định định môi trường 369
Tiêu đề
Tiêu đề
Văn bản
Văn bản
Văn bản
Văn bản
(Ngày 28 tháng 10 năm
(hôm qua)
2022)
\NewDocumentEnvironment{teszt*}{mO{\today}+b}{%
\fbox{\parbox{5cm}{\underline{#1}\par#3\par(#2)}}}{}
7 Ví dụ 9.71 8
\begin {teszt*} {Tiêu đề}
Văn bản \par Văn bản
\end {teszt*}
\begin {teszt*}{Tiêu đề} [hôm qua]
Văn bản \par Văn bản
\end {teszt*}
: 2
Tiêu đề
Tiêu đề
Văn bản
Văn bản
Văn bản
Văn bản
(Ngày 28 tháng 10 năm
(hôm qua)
2022)
Bạn không thể xác định môi trường nguyên văn với các
phương thức trước đó vì các lệnh cần thiết cho việc này không
thể được đặt trong đối số của lệnh khác. Ví dụ: phân tích lý do
tại sao mã sau có thể không hoạt động sau khi tải gói fancyvrb
.sty:
\newenvironment{frameverb}{\begin{Verbatim}[frame=single]}
{\end{Verbatim}}
Khi đó ta dùng
\begin{delphi}[<tùy chọn>]
...
\end{delphi}
Hoặc
\begin{lstlisting}[language=Delphi,numbers=left,numberstyle=\tin
chọn>]
...
\end{lstlisting}
Ngoài ra, nếu bạn muốn đánh dấu vị trí của các nhận xét bằng
dấu - chẳng hạn, giải pháp này là:
\renewenvironment{megjegyzes}{}{}
\processcomment{megjegyzes}
{\stepcounter{tetel}\def\ThisComment##1{}}{---}{}
Bạn cũng có thể xác định môi trường của riêng mình với
đặc tả lớp phủ trong lớp tài liệu beamer. Bạn có thể sử dụng
Giá trị mặc định của đặc tả lớp phủ môi trường chuẩn mực
được xác định như vậy là <1->. Sử dụng:
\begin{boldornormal}<đối số>
<văn bản>
\end{boldornormal}
Bạn cũng có thể xác định môi trường danh sách của riêng
mình bằng lệnh sau:
\newlist{<tên danh sách>} {<loại danh sách>} {<số cấp tối đ
a>}}
(trong enumitem.sty)
xác định một môi trường danh sách được đánh số gọi là steps
có thể được lồng vào nhau sâu đến hai cấp. Sau đó, điều này
có thể được đặt bằng lệnh \setlist chính xác như đối với các
môi trường danh sách khác (xem phần 7.4). Ví dụ
\\setlist[steps,1]{label=\textbf{\arabic*. bước.},align=
left}
\setlist[steps,2]{label=(\alph*)}
9.6 Mỏ neo
\BeforeBeginEnvironment{environment}{code}
\AtBeginEnvironment{environment}{code}
\AtEndEnvironment{environment}{code}
\AfterEndEnvironment{environment} {code}
Đối với hệ thống T E X được cài đặt trước tháng 10 năm 2020,
các lệnh này là có sẵn bằng cách tải etoolbox. Đối với hệ thống
T E X được cài đặt sau tháng 10 năm 2020, hệ thống trước đó
các lệnh tương đương như sau:
\AddToHook{env/<environment>/before}{<mã lệnh>}
\AddToHook{env/<environment>/begin}{<mã lệnh>}
\AddToHook{env//<environment>/end}{<mã lệnh>}
\AddToHook{env//<environment>/after}{<mã lệnh>}
\AfterEndEnvironment{center}{<mã lệnh4>}
...
\begin{center}
<mã lệnh5>
\end{center}
...
\begin{center}
<mã lệnh6>
\end{center}
Kết quả sẽ giống như khi bạn đã sử dụng những thứ sau:
...
<mã lệnh1>{<mã lệnh2>\begin{center}
<mã lệnh5><mã lệnh3>
\end{center}}<mã lệnh4>
...
<mã lệnh1>{<mã lệnh2>\begin{center}
<mã lệnh6><mã lệnh3>
\end{center}}<mã lệnh4>
Các lệnh được mô tả ở trên thêm mã được chỉ định vào neo đã
cho, không thay thế. Ví dụ
szamb
7 Ví dụ 9.72 8
\AtBeginEnvironment{center}{\bfseries}
\begin{center}
Đầu tiên
\end{center}
\AtBeginEnvironment{center}{\itshape}
\begin{center}
Thứ hai
\end{center}
: 2
Đầu tiên
Thứ hai
Bạn cũng có thể tạo các lớp và gói tài liệu của riêng mình.
Tạo một gói nếu nó hoạt động với nhiều lớp tài liệu. Nếu không,
hãy viết một lớp tài liệu. Cũng có thể biến các tệp này thành
một phần của bản phân phối TEX chính thức. Để biết thông tin
về điều này, bấm vào đây.
https://mirror-hk.koddos.net/CTAN/info/dtxtut/dtxtut.pdf
Có thể quản lý ở đây: bấm vào đây.
https://www.ctan.org/upload https://www.ctan.org/help/upload-
pkg
376 Chương 10. Viết gói lệnh
Khi viết một gói, hãy xem xét những điều sau:
- Tập tin nguồn của gói phải có phần mở rộng là sty và được
đặt trong thư mục của tập tin chính có phần mở rộng tex.
- Tệp nguồn gói lệnh chỉ nên chứa các ký tự ascii, vì vậy hãy
nhập các ký tự có dấu với dấu bay. Điều này là bắt buộc để tải
vào bất kỳ tệp chính được mã hóa nào bằng lệnh \usepackage.
- Tất cả các lệnh trong phần mở đầu của tệp chính có
thể được ghi vào tệp nguồn của gói, chỉ cần sử dụng \
RequirePackage thay vì \usepackage. \RequirePackage khác với
\usepackage ở chỗ nó có thể được tải trước khi lớp tài liệu được
tải.
- Các lệnh nội bộ trong một gói hoạt động mà không cần các
lệnh \makeatletter và \makeatother.
Cấu trúc của tệp có phần mở rộng là sty như sau:
\NeedsTeXFormat {LaTeX2e} [<date1>]
\ProvidesPackage{<package name>}[<date2><version><mô tả>]
<Nội dung>
\endinput
<Date1> được yêu cầu để sử dụng gói LATEX ngày phiên bản
ở định dạng yyyy/mm/dd, ví dụ: 12/1/1999. <package name> trùng
tên của tệp với phần mở rộng sty. Nếu có thể, chỉ sử dụng các
chữ cái và số trong bảng chữ cái tiếng Anh. Vì vậy, nếu v.d. nếu
tên tệp là my.sty, tên <package name> sẽ được thay thế bằng tên
của riêng ta. <date2> là ngày gói được xuất bản ở định dạng
giống như trước đây. <version> là số phiên bản của gói, ví dụ:
v1.0. <mô tả> là một vài từ về mục đích của gói mà không sử
dụng lệnh, với các ký tự ascii.
Bạn cũng có thể cung cấp các tùy chọn cho một gói. Ví dụ:
hãy để my.sty chứa:
\NeedsTeXFormat{LaTeX2e} [12/1/1999]
\ProvidesPackage{my}[20/06/2021 v1.0 Gói này chỉ là một ví
dụ]
\DeclareOption{<tùy chọn1>} {<mã lệnh 1>}
Gói riêng sau đó sẽ có hai tùy chọn: <tùy chọn1> (tùy chọn
cơ bản) và <tùy chọn2>. Nếu bạn sử dụng tùy chọn <tùy chọn2>,
mã <mã lệnh 2> sẽ có hiệu lực. Tuy nhiên, cho dù bạn có phát
hành tùy chọn <tùy chọn1> hay không thì <mã lệnh 1> vẫn có
giá trị. Nếu bạn chỉ định nhiều tùy chọn làm tùy chọn mặc
định trong lệnh \ExecuteOptions, chúng phải được phân tách
bằng dấu phẩy:
\ExecuteOptions{<tùy chọn1>,<tùy chọn1>,...}
Bạn cũng có thể chỉ định một giá trị cho các tùy chọn
của mình (bộ đếm, độ dài, chuỗi, boolean). Ví dụ geometry và
hyperref các gói cũng có các tùy chọn như vậy:
\usepackage[width=150mm]{geometry}
\usepackage[linktocpage=false,linkcolor=blue]{hyperref}
Sau đó, nếu bạn tải gói my.sty với các tùy chọn cơ bản trong
tài liệu
\usepackage{my}
thì các mã được cung cấp bởi các tùy chọn cơ bản sẽ áp
dụng:
- <mã lệnh2> là true
- \my@<mã lệnh4> cho kết quả là <mã lệnh4>.
Ví dụ: nếu bạn tải theo cách này
\usepackage [<tùy chọn1>,<tùy chọn2> = false, <tùy chọn4> =
<mã lệnh5>] {my}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{my}[20/06/2021 v1.0 Gói này chỉ là một ví
dụ]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=my,prefix=my@}
\DeclareVoidOption{unicode}{\PassOptionsToPackage{unicode}{
hyperref}}
\DeclareBoolOption{colorlinks}
\DeclareStringOption{urlcolor}
\ProcessKeyvalOptions{my}
\ifmy@colorlinks\PassOptionsToPackage{colorlinks}{hyperref}
\fi
\PassOptionsToPackage{urlcolor=\my@urlcolor}{hyperref}
\RequirePackage[bookmarksopen]{hyperref}
\endinput
Các tùy chọn unicode, liên kết màu và urlcolor của gói
hyperref sau đó có thể được sử dụng như một tùy chọn cho
gói riêng.
Có thể gửi cho người dùng một cảnh báo khi dịch:
\PackageWarning{<tên gói lệnh>}{<nội dung thông báo>}
Bạn cũng có thể dừng bản dịch khi có thông báo lỗi:
\PackageError{<tên gói lệnh>}{<thông báo lỗi>}{<trợ giúp
>}
Bạn có thể sử dụng lệnh \MessageBreak để ngắt một dòng
trong văn bản tin nhắn.
\AtEndOfPackage{<mã lệnh>}
Bất kỳ nơi nào bạn đưa ra lệnh này trong tệp gói, <mã lệnh>
sẽ được thực thi ở cuối tệp. Việc phát hành lệnh này nhiều lần
sẽ hiển thị lần lượt các mã được chỉ định.
Đối với một lớp tài liệu, quy trình tương tự như đối với gói,
ngoại trừ phần mở rộng tệp nguồn của lớp tài liệu cls và \
ProvidesPackage sử dụng lệnh \ProvidesClass để thay thế. Bạn
nên tải một lớp tài liệu hiện có làm cơ sở bằng lệnh \LoadClass.
Hãy xem ví dụ sau. Hãy để my.cls chứa:
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{my}[20/06/2021 v1.0 Gói này chỉ là một ví
dụ]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=my,prefix=my@}
\DeclareBoolOption[true]{<tùy chọn>}
\ProcessKeyvalOptions{my}
\ifmy@<tùy chọn><mã lệnh true>\else<mã lệnh false>\fi
\LoadClass[12pt,a4paper]{article}
\RequirePackage[T1]{fontenc}
\PassOptionsToPackage{defaults=vi-min}{vietnam.ldf}
\RequirePackage[magyar]{babel}
\endinput
Sau đó, nếu, ví dụ, bạn tải tệp lớp my.cls trong tài liệu như
sau
\documentclass[<tùy chọn> = false]{my}
sau đó bạn sẽ nhận được kích thước phông chữ cơ bản 12pt,
kích thước trang A4, tài liệu kiểu chữ Vietnam theo loại bài
báo, trong đó "mã là giả mạo" sẽ được giải thích.
Tùy chọn của một lớp tài liệu cũng có thể được kế thừa cho
lớp tài liệu của riêng chúng ta. Điều này có thể được thực hiện
theo cách tương tự như đối với các gói, chỉ khi đó bạn cần sử
dụng lệnh \PassOptionsToClass thay vì \PassOptionsToPackage.
Ví dụ: hãy để my.cls chứa:
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{my}[20/06/2021 v1.0 Gói này chỉ là một ví
dụ]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=my,prefix=my@}
\DeclareVoidOption{11pt}{\PassOptionsToClass{11pt}{article}
}
\DeclareVoidOption{12pt}{\PassOptionsToClass{12pt}{article}
}
\ProcessKeyvalOptions{my}
\LoadClass[a4paper]{article}
\endinput
Các tùy chọn 11pt và 12pt trong lớp tài liệu bài viết sau
đó có thể được sử dụng như một tùy chọn cho lớp tài liệu của
riêng bạn.
Có thể gửi cho người dùng một cảnh báo khi dịch:
\ClassWarning{<tên lớp>}{<thông báo>}
Bạn cũng có thể dừng bản dịch khi có thông báo lỗi:
\ClassError{<tên lớp>}{<thông báo lỗi>} {<trợ giúp>}
Bạn có thể sử dụng lệnh \MessageBreak để ngắt một dòng
trong văn bản tin nhắn.
\AtEndOfClass{<mã lệnh>}
Bất kỳ nơi nào bạn đưa ra lệnh này trong tệp lớp, <mã lệnh>
sẽ được thực thi ở cuối tệp. Việc phát hành lệnh này nhiều lần
sẽ hiển thị lần lượt các mã được chỉ định.
Để biết phân loại các biến thể chữ cái, xem 4.4.1. tiểu mục.
Bây giờ chúng ta hãy nhìn vào Cách chọn phông chữ khác với
cài đặt mặc định. Để giúp đỡ với điều này cũng có thể là Cả
trang web https://tug.org/FontCatalogue/ Danh mục Phông
11.1. Danh mục phông chữ LATEX 383
Phần này tóm tắt các họ phông chữ Latinh được cài đặt
trên hệ thống TEX và các mã cần thiết để sử dụng chúng. Để
hiểu các mã này, bạn cũng sẽ cần nghiên cứu các phần sau của
chương này. Các bộ phông chữ có sẵn liên tục mở rộng, vì vậy
danh sách dưới đây cũng có thể không đầy đủ.
1. Chữ có chân
2. Chữ không chân
3. Chữ máy đánh chữ
4. Chữ kiểu khác
mặc định, LATEX hiển thị phông chữ cổ, có độ dày bình thường,
đứng, có kích thước 10pt trong pdf, sử dụng bộ phông chữ có
tên là cmr10 (mặc định).
Trong các bộ phông chữ, mỗi ký tự có một số mã. Nếu bạn
cần chèn một ký tự ASCII vào pdf, bạn chọn ký tự có mã tương
ứng với mã ASCII từ bộ phông chữ. Vì vậy, ví dụ, chữ O, có
mã ASCII là 79, được thay thế bằng chữ O của mã 79 trong bộ
phông chữ cmr10. Tuy nhiên, mã hóa của bộ phông chữ cmr10
không phải lúc nào cũng tuân theo ASCII. Ví dụ: mã ASCII
của ký tự < là 60, trong khi ký tự 60 ký tự của bộ phông chữ
cmr10 là ¡, dẫn đến một kết quả đáng ngạc nhiên:
7 Ví dụ 11.1 8: 2
\documentclass{article}
\begin{document}
¡O
<O
\end{document}
- Sau các âm tiết có chứa các chữ cái có dấu, bạn không thể
tách ở cuối dòng.
- Không thể tìm kiếm các từ chứa chữ cái có dấu trong bản
pdf hoàn chỉnh.
- Nếu bạn sao chép văn bản có chứa các chữ cái có dấu từ
tệp pdf, các chữ cái có dấu sẽ hiển thị không chính xác.
Một vấn đề khác là không phải tất cả các họ phông chữ mặc
định đều chứa các ký tự dấu riêng biệt, vì vậy trường hợp sau
tạo ra kết quả không chính xác:
7 Ví dụ 11.3 8: 2
\documentclass{article}
\begin{document} }O
\ttfamily Ő
\end{document}
´0 ´1 ´2 ´3 ´4 ´5 ´6 ´7
´00x Γ0 ∆1 Θ2 Λ3 Ξ4 Π5 Σ6 Υ7
˝0x
´01x Φ8 Ψ9 Ω 10 ff 11 fi 12 fl 13 ffi 14 ffl 15
´02x ı 16 ȷ 17 ` 18 ´ 19 ˇ 20 ˘ 21 ¯ 22 ˚ 23
˝1x
´03x ¸ 24 ß 25 æ 26 œ 27 ø 28 Æ 29 Œ 30 Ø 31
´04x 32 ! 33 ” 34 # 35 $ 36 % 37 & 38 ’ 39
˝2x
´05x ( 40 ) 41 * 42 + 43 , 44 - 45 . 46 / 47
´06x 0 48 1 49 2 50 3 51 4 52 5 53 6 54 7 55
˝3x
´07x 8 56 9 57 : 58 ; 59 ¡ 60 = 61 ¿ 62 ? 63
´10x @ 64 A 65 B 66 C 67 D 68 E 69 F 70 G 71
˝4x
´11x H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79
´12x P 80 Q 81 R 82 S 83 T 84 U 85 V 86 W 87
˝5x
´13x X 88 Y 89 Z 90 [ 91 “ 92 ] 93 ˆ 94 ˙ 95
´14x ‘ 96 a 97 b 98 c 99 d 100 e 101 f 102 g 103
˝6x
´15x h 104 i 105 j 106 k 107 l 108 m 109 n 110 o 111
Ngoài ra, việc thay đổi họ không gây ra các kết quả sai lệch:
7 Ví dụ 11.5 8: 2
\documentclass{article}
\usepackage[T1]{fontenc} Ő
\begin{document}
\ttfamily Ő
\end{document}
´0 ´1 ´2 ´3 ´4 ´5 ´6 ´7
´00x `0 ´1 ˆ2 ˜3 ¨4 ˝5 ˚6 ˇ7
˝0x
´01x ˘8 ¯9 ˙ 10 ¸ 11 ˛ 12 ‚ 13 ‹ 14 › 15
´02x “ 16 ” 17 „ 18 « 19 » 20 – 21 — 22 23
˝1x
´03x 24 ı 25 ȷ 26 ff 27 fi 28 fl 29 ffi 30 ffl 31
´04x ␣ 32 ! 33 " 34 # 35 $ 36 % 37 & 38 ’ 39
˝2x
´05x ( 40 ) 41 * 42 + 43 , 44 - 45 . 46 / 47
´06x 0 48 1 49 2 50 3 51 4 52 5 53 6 54 7 55
˝3x
´07x 8 56 9 57 : 58 ; 59 < 60 = 61 > 62 ? 63
´10x @ 64 A 65 B 66 C 67 D 68 E 69 F 70 G 71
˝4x
´11x H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79
´12x P 80 Q 81 R 82 S 83 T 84 U 85 V 86 W 87
˝5x
´13x X 88 Y 89 Z 90 [ 91 \ 92 ] 93 ^ 94 _ 95
´14x ‘ 96 a 97 b 98 c 99 d 100 e 101 f 102 g 103
˝6x
´15x h 104 i 105 j 106 k 107 l 108 m 109 n 110 o 111
´16x p 112 q 113 r 114 s 115 t 116 u 117 v 118 w 119
˝7x
´17x x 120 y 121 z 122 { 123 | 124 } 125 ~ 126 - 127
´20x Ă 128 Ą 129 Ć 130 Č 131 Ď 132 Ě 133 Ę 134 Ğ 135
˝8x
´21x Ĺ 136 Ľ 137 Ł 138 Ń 139 Ň 140 Ŋ 141 Ő 142 Ŕ 143
´22x Ř 144 Ś 145 Š 146 Ş 147 Ť 148 Ţ 149 Ű 150 Ů 151
˝9x
´23x Ÿ 152 Ź 153 Ž 154 Ż 155 IJ 156 İ 157 đ 158 § 159
´24x ă 160 ą 161 ć 162 č 163 ď 164 ě 165 ę 166 ğ 167
˝Ax
´25x ĺ 168 ľ 169 ł 170 ń 171 ň 172 ŋ 173 ő 174 ŕ 175
´26x ř 176 ś 177 š 178 ş 179 ť 180 ţ 181 ű 182 ů 183
˝Bx
´27x ÿ 184 ź 185 ž 186 ż 187 ij 188 ¡ 189 ¿ 190 £ 191
´30x À 192 Á 193 Â 194 Ã 195 Ä 196 Å 197 Æ 198 Ç 199
˝Cx
´31x È 200 É 201 Ê 202 Ë 203 Ì 204 Í 205 Î 206 Ï 207
´32x Ð 208 Ñ 209 Ò 210 Ó 211 Ô 212 Õ 213 Ö 214 Œ 215
˝Dx
´33x Ø 216 Ù 217 Ú 218 Û 219 Ü 220 Ý 221 Þ 222 SS 223
´34x à 224 á 225 â 226 ã 227 ä 228 å 229 æ 230 ç 231
˝Ex
´35x è 232 é 233 ê 234 ë 235 ì 236 í 237 î 238 ï 239
Có năm phần thông tin cần thiết để chọn bộ phông chữ được
sử dụng trong pdf:
- Mã nội bộ (mặc định: OT1).
- Mã họ phông (mặc định: cmr).
- Mã thân (mặc định: m).
- Mã hình dạng (mặc định: n).
- Kích thước phông chữ (mặc định: 10pt).
Bạn có thể tìm thấy các giá trị có thể có cho mã family, body
và shape trong 23.1. phần. CÁC Để đặt kích thước phông chữ,
hãy xem phần 4.5. phần.
Trừ khi có hướng dẫn khác trong mã nguồn, trình biên dịch
A
L TEX và tải tệp có phần mở rộng fd (định nghĩa phông chữ) dựa
trên mã họ phông. Theo mặc định OT1 là mã hóa nội bộ và cmr
là mã họ phông, vì vậy nó tải tệp ot1cmr.fd. Sau đó nó sẽ là mã
cơ thể và hình dạng và kích thước phông chữ, theo mặc định
là m, n và 10pt. Bạn sẽ tìm thấy hướng dẫn về những điều này
trong tệp ot1cmr.fd Người dịch TEX, để sử dụng bộ phông chữ
có tên cmr10.
Nếu chúng ta chuyển sang mã hóa nội bộ T1, nó sẽ tải
t1cmr.fd thay vì ot1cmr.fd trong, trong đó m, n và 10pt được
liên kết với bộ phông chữ ecrm1000.
11.3.1 Họ phông
\refreshcommand{\rmdefault} {<family>}
Giá trị mặc định cho mã họ phông có chân là <family>: \
rmfamily và \textrm kích hoạt điều này. Giá trị mặc định cho
\def\mdseries@<loại họ phông>{<family>}
với mã.
\DeclareFontSeriesDefault{md}{<family>}
Lệnh này chỉ có thể được đưa ra trong phần mở đầu. Điều
này cho phép bạn đặt <family> làm giá trị mặc định cho mã
thân thể bình thường, tức là \mdseries và \textmd kích hoạt mã
này nếu họ hiện tại được khai báo bằng lệnh \fontfamily hoặc
\usefont được thảo luận sau. Giá trị mặc định cho <family> là
m (bình thường). Mã này tương đương với
\def \mddefault{<family>}
với mã.
\DeclareFontSeriesDefault [<loại họ phông>] {bf} {<
family>}
Lệnh này chỉ có thể được đưa ra trong phần mở đầu. Điều
này cho phép bạn đặt <family> làm giá trị mặc định cho mã
nội dung in đậm, tức là \bfseries và \textbf kích hoạt mã nội
dung này nếu họ hiện tại là <loại họ phông>. Các giá trị có thể
có cho kiểu <loại họ phông> là rm, sf hoặc tt, tùy thuộc vào lệnh
nào trong số các lệnh \rmfamily (\textrm), \sffamily (\textsf
), \ttfamily (\texttt) được khai báo. Trong cả ba trường hợp,
giá trị mặc định của <family> là bx (in đậm mở rộng). Ví dụ
\DeclareFontSeriesDefault[rm]{bf}{eb}
trong trường hợp này
\rmfamily \bfseries
kích hoạt mã cơ thể eb. Lưu ý rằng một
\DeclareFontSeriesDefault[<loại họ phông>]{bf}{<family>}
mã tương đương với một
\def\bfseries@<loại họ phông>{<family>}
với mã.
\DeclareFontSeriesDefault{bf} {<family>}
Lệnh này chỉ có thể được đưa ra trong phần mở đầu. Điều
này cho phép <family> là giá trị mặc định cho mã nội dung
in đậm, nghĩa là \bfseries và \textbf kích hoạt mã nội dung
này nếu họ hiện tại được khai báo bằng lệnh \fontfamily hoặc
\usefont được thảo luận sau. Giá trị mặc định cho <family> là
b (in đậm). Mã này tương đương với \def\bfdefault{<family>}.
\refreshcommand{\seriesdefault}{<family>}
Mã nội dung mặc định phải là "body". \normalfont và \
textnormal làm điều này kích hoạt mã <family>. Giá trị mặc
định cho <family> là \mddefault
n it it sl
n sl sl it
n ulc n
n up n
it sl sl it
it sc scit scsl
it ulc it
it up n
sl it it sl
sl sc scsl scit
sl ulc sl
sl up n
sc it scit scsl
sc sl scsl scit
sc sw scsw sw
sc ulc n
sc up n
scit it scit
scit sl scsl scit
scit sw scsw sc
scit sc scit
scit ulc it
scit up sc
scsl it scit scsl
scsl sl scsl
scsl sw scsw sc
scsl sc scsl
scsl ulc sl
scsl up sc
scsw it scit scsw
scsw sl scsl
scsw sw scsw
scsw sc scsw
scsw ulc sw
scsw up sc
sw sc scsw
sw ulc sw
sw up n
Bạn cũng có thể sử dụng các lệnh sau để tạm thời chuyển
sang phông chữ khác với cài đặt mặc định ở một vị trí cụ thể.
\fontencoding {<encoding>}
\fontfamily {<family>}
\fontseries {<bodily>}
\fonthape {<hd>}
\selectfont
Sau đó, mã hóa, họ, nội dung và hình dạng được tải với
các tham số đã cho. Mã hóa cũng phải được tải trong tùy chọn
fontenc, trừ khi mã là OT1, T1 hoặc U. Năm lệnh trước trên có
thể được nhập cùng một lúc:
\usefont{<encoding>}{<family>}{<bodily>}{<hd>}
7 Ví dụ 11.6 8: 2
\documentclass{article}
\usepackage[T5]{fontenc} „Tồn tại hay không: đó là câu hỏi ở
\PassOptionsToPackage{ đây. . . ” (William
defaults=hu-min}{vietnam.ldf} Shakespeare)
\usepackage[vietnam]{babel}
\begin{document}
{\usefont{T5}{qzc}{m}{it},,Tồ
n tại hay không: đó là câu hỏ
i ở đây’’}
(William Shakespeare)
\end{document}
Trước đây chúng ta đã thấy rằng các hình dạng khác nhau
có thể được kết hợp nếu nó được hỗ trợ bởi bộ phông chữ hiện
tại. Điều này cũng đúng với định nghĩa. Ví dụ
7 Ví dụ 11.7 8: 2
{\usefont{T5}{antt}{c}{n} văn bản1 văn bản1 văn bản 2
\bfseries văn bản 2}
\DeclareFontSeriesChangeRule{<family1>} {<family2>}
{<family3>} {<family4>}
Điều quan trọng là <mã nội bộ> phải giống với mã nội bộ
được đặt cho <family>.
Ví dụ
\DeclareFontFamily{T1}{myrm}{}
\DeclareFontShape{T1} {myrm}{m}{n}{<-> ssub*clm/m/n}{}
Sau đó dùng
7 Ví dụ 11.8 8: 2
{\usefont{T1}{myrm}{m}{n} khong dau} khong dau
\\ MA KHONG DAU
{\usefont{T1}{myrm}{b}{sc} ma khong
dau}
\DeclareFontFamily{T1}{lmr}{}
\DeclareFontShape{T1}{lmr}{m}{n}{%
<-5.5> ec-lmr5 <5.5-6.5> ec-lmr6
<6.5-7.5> ec-lmr7 <7.5-8.5> ec-lmr8
<8.5-9.5> ec-lmr9 <9.5-11> ec-lmr10
<11-15> ec-lmr12 <15-> ec-lmr17}{}
Theo điều này, nếu họ lmr đang hoạt động với m mã cơ thể và
mã hình dạng n, thì bộ phông chữ được cài đặt là ec-lmr17 có
kích thước trên phông chữ là ec-lmr5, 5,5pt đến 6,5pt dưới
kích thước phông chữ 5,5pt sẽ. tải trọng. Họ tải các bộ phông
chữ khác nhau trong các phạm vi kích thước khác nhau vì
phông chữ ở kích thước 5pt có thể trông đẹp, nhưng phóng to
đến kích thước 20pt có thể không còn là lý tưởng nhất. Để minh
họa điều này, hãy xem trích xuất “văn bản” với các bộ phông
chữ và kích thước khác nhau:
Cỡ phông độ đo pt
ec-lmr5 20 morning
ec-lmr17 20 morning
ec-lmr5 5 morning
ec-lmr17 5 morning
Cột đầu tiên của bảng sau đây hiển thị các gói thay đổi theo
bảng Anh. Các cột bổ sung cho bạn biết họ phông chữ mã nào
mà gói cụ thể tải thay cho họ phông chữ có chân, không chân
và máy đánh chữ, và có nên chuyển đổi cả phông chữ toán học
hay không. Bạn cũng có thể muốn đọc mô tả gói, vì một số có
tùy chọn.
newpxmath
cyklop cyklop - - -
tgbonum qbk - - -
tgadventor - qag - -
tgchorus qzc - - -
tgcursor - - qcr -
tgheros - qhv - -
tgpagella qpl - - -
tgschola qcs - - -
tgtermes qtm - - -
p
anttor antt - -
p
arev fav fav fvm
p
cmbright - cmbr cmtl
Nếu bạn đang tự hỏi bộ phông chữ nào mà một nhóm cụ thể
tải cho một nội dung, hình dạng và kích thước nhất định, hãy
sử dụng mã sau:
{\fontize{<cỡ phông>} {\the\baselineskip}
\usefont {<mã nội bộ>} {<họ phông>} {<mã thân>} {<hình dạng
>}
\xdef\thisfont{\fontname\font}}
\thisfont
7 Ví dụ 11.9 8: 2
{\fontsize{16}{\the\baselineskip} ec-lmr17 at 16.0pt
\usefont{T1}{lmr}{m}{n}
\xdef\thisfont{\fontname\font}}
\thisfont
7 Ví dụ 11.10 8
\makeatletter
\xdef\thisfont{%
\f@encoding/\f@family/\f@series/\f@shape/\f@size/\fontname\
font}
\makeatother
{\usefont{OT1}{cmr}{m}{n}\thisfont}
: 2
T5/fnc/m/n/12/uncr8v at 12.0pt
Cũng có thể xem tất cả các ký tự được thiết kế bằng phông
chữ được tải trong một họ cho một thân, hình dạng và kích
thước nhất định trong một bảng. Để thực hiện việc này, hãy sử
dụng tệp có chứa mã sau:
\documentclass{article}
\usepackage[<mã nội bộ>]{fontenc}
\begin{document}
\input{fntproof}
\fontsize{<cỡ phông>}{\the\baselineskip}
\usefont{<mã nội bộ>}{<họ phông>}{<mã thân>}{<hình dạng>}
\initcurrentfont
\fonttable
\end{document}
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\input{fntproof}
\fontsize{12}{\the\baselineskip}
\usefont{T1}{lmr}{m}{n}
\initcurrentfont
\fonttable
\end{document}
sau khi dịch, bạn có thể thấy tất cả các ký tự được thiết kế
bằng phông chữ có tên ec-lmr12 trong bảng kết quả. (Cụ thể,
nó điền vào phông chữ này cho bộ mã nội bộ T1, họ lmr, nội
dung m, hình dạng n và kích thước 12pt.)
Mỗi ký tự cũng có một số mã, có thể được tìm thấy trong các
hàng và cột đầu tiên và cuối cùng của bảng. Số mã có thể được
chỉ định ở dạng thập phân, bát phân và thập lục phân. Bảng
chỉ chứa các mã bát phân và thập lục phân. Ví dụ, ký tự bát
phân có mã bát phân là 113 và mã thập lục phân là 4B. Trong
số này, mã thập phân là 1 · 82 + 1 · 81 + 3 · 80 = 75.
Một ký tự có thể được gọi bằng số mã của nó là
\symbol{<thập phân>}
\symbol{’<bát phân>}
\symbol{"<thập lục phân>}
Hoặc
\char<thập phân>
\char’<bát phân>}
\char"<thập lục phân>
7 Ví dụ 11.11 8: 2
\usefont{T1}{lmr}{m}{n} KKK
\symbol{75}
\symbol{’113}
\symbol{"4B}
\pagestyle{empty}
\newcounter{currchar}
\renewcommand{\ttdefault}{lmtt}
\renewcommand{\familydefault}{\ttdefault}
\newlength{\fontht}
\newlength{\fonthtd}
\newlength{\fonthtnext}
\newlength{\fonthtnextd}
\settoheight{\fontht}{\FONT\char0}
\settodepth{\fonthtd}{\FONT\char0}
\addtolength{\fontht}{\fonthtd}
\loop
\ifnum\value{currchar}<255
\stepcounter{currchar}
\settoheight{\fonthtnext}{\FONT\char\arabic{currchar}}
\settodepth{\fonthtnextd}{\FONT\char\arabic{currchar}}
\addtolength{\fonthtnext}{\fonthtnextd}
\ifdim\fonthtnext>\fontht\setlength{\fontht}{\fonthtnext}\
fi
\repeat
\addtolength{\fontht}{5pt}
\setcounter{currchar}{0}
\begin{document}
\noindent{\FONT\xdef\thisfont{\fontname\font}}%
\kern1em\framebox{\thisfont}
\begin{multicols}{10}
\noindent
\loop
\ifnum\value{currchar}<256
\phantom{\rule{0pt}{\fontht}}%
\kern1em\smash{\FONT\char\arabic{currchar}}\hfill
{\footnotesize\color{blue}\arabic{currchar}}\kern1em\\
\stepcounter{currchar}
\repeat
\end{multicols}
\end{document}
ới thông số cụ thể
\usepackage[T1]{fontenc}
\def\FONT{\fontsize{12}{\the\baselineskip}%
\usefont{T1}{lmr}{m}{n}}
Các chữ cái Hy Lạp thường cần thiết nhất khi viết công
thức. Trường hợp này được mô tả trong Phần 14.4. sẽ được
thảo luận trong phần. Nếu bạn muốn viết các chữ cái Hy Lạp
trong môi trường phông chữ Latinh, nhưng không phải trong
công thức, hãy tải LGR trước bộ mã nội bộ T1:
\usepackage[LGR,T1]{fontenc}
7 Ví dụ 12.1 8
{\fontencoding{LGR}\selectfont abcdefghijklmnopqrstuxyz}
: 2
αβςδεφγηιθκλμνοπχρστυξψζ
Bạn cũng có thể sử dụng các phông chữ khác với mã sau:
{\fontencoding {LGR} \fontfamily {<font>} \selectfont <
Greek letter>}
trong đó các giá trị của <font> có thể là, ví dụ: artemisia ,
gfsbaskerville , bodoni, complutum, udidot, neohellenic, porson,
solomos, txr, mak, llcmss.
7 Ví dụ 12.2 8
{\fontencoding{LGR}\fontfamily{gfsbodoni}\selectfont
abcdefghijklmnopqrstuxyz}\\
{\fontencoding{LGR}\fontfamily{gfssolomos}\selectfont
abcdefghijklmnopqrstuxyz}
: 2
αβςδεφγηιθκλμνοπχρστυξψζ
αβςδεφγηιθκλμνοπχρστυξψζ
Với gói textgreek.sty, bạn cũng có thể in một chữ cái Hy
Lạp dựa trên tên của nó:
Đôi khi, chữ cái Kirin có thể được yêu cầu trong văn bản
Latinh. Để làm điều này, bộ mã nội bộ T1 cũng tải T2C trước:
\usepackage[T2C,T1]{fontenc}
Sau đó, T1 sẽ là mặc định. Các chữ cái kirin của T2C:
Chữ hoa Kirin
Chữ cổ Kirin
7 Ví dụ 12.3 8
{\fontencoding{T2C}\selectfont
\CYRH\cyra\cyrr\cyro\cyrsh\cyro }
: 2
Харошо
Bạn có thể hiển thị các chữ cái Kirin của T2C bằng lệnh
sau:
{\fontencoding{T2C}\selectfont <các chữ cái Kirin>}
7 Ví dụ 12.4 8
{\fontencoding{T2C}\selectfont Компьютер в
математическом исследовании }
: 2
Компьютер в математическом исследовании
Ngoài các chữ cái Latinh và Kirin, có rất nhiều loại chữ cái
khác nhau. Ví dụ: tgothic.sty là Gothic có thể được viết bằng
một gói:
7 Ví dụ 12.5 8
\documentclass[varwidth, preview]{standalone}
\usepackage[T1,T50,as]{vntext}
\usepackage{tgothic}
\begin{document}
\normalfont\tgothfamily
7 Ví dụ 12.6 8
\lettrine[lines=3, slope=0.5em, lhang=0.0, nindent=3pt]{D}{
ù} rất chua chát nhưng sự thật là, nhà ở có sửa to, rộ
ng hơn thế nào đi nữa cũng chỉ là nơi ở tạm thời. Cái
quách sành mới là nhà ở vĩnh hằng của tất cả chúng ta.
Thế nên, nhà rộng chẳng bằng tâm rộng, tấm lòng rộng mở
, bề ngoài an yên không bằng cõi lòng an yên.
: 2
rất chua chát nhưng sự thật là, nhà ở có sửa to,
D
Ù
rộng hơn thế nào đi nữa cũng chỉ là nơi ở tạm thời.
Cái quách sành mới là nhà ở vĩnh hằng của tất
cả chúng ta. Thế nên, nhà rộng chẳng bằng tâm rộng, tấm
lòng rộng mở, bề ngoài an yên không bằng cõi lòng an yên.
7 Ví dụ 12.7 8
\lettrine[lines=3, slope=0.5em, lhang=0.0, nindent=3pt]{T}{
iền}
bạc khó mua được sức khỏe nhưng sức khỏe sẽ được tăng cườ
ng hơn nhờ tiền bạc; tiền bạc khó mua được hạnh phúc nh
ưng muốn có hạnh phúc, buộc phải có sức khỏe.
T
IỀN
sẽ được tăng cường hơn nhờ tiền bạc; tiền bạc khó
mua được hạnh phúc nhưng muốn có hạnh phúc,
buộc phải có sức khỏe.
ẠNH phúc của đời người không nằm ở danh lợi mà
Sử dụng lệnh để đặt độ dày của đường viền, trong đó giá trị
mặc định cho <size> là 0,03em. Lệnh làm viền:
\contour{<tên màu>}{<văn bản>} %trong gói contour.sty
7 Ví dụ 12.9 8
\contourlength{0.5pt}
\contour{pink}{\LARGE\bfseries\color{blue} NGUYỄN HỮU ĐIỂN}
: 2
NGUYỄN
NGUYỄNHỮU
HỮUĐIỂN
ĐIỂN
Để tô bóng văn bản, hãy sử dụng shadowtext.sty
\shadowtext {<văn bản>} %trong gói shadowtext.sty
7 Ví dụ 12.10 8
\shadowtext{VĂN BẢN ĐƯỢC TÔ BÓNG}
: 2
VĂN BẢN ĐƯỢC TÔ BÓNG
Bạn cũng có thể điều chỉnh màu bóng bằng gói xcolor được
mô tả trước đó:
\shadowcolor{<tên màu} %trong gói shadowtext.sty
7 Ví dụ 12.11 8
\shadowcolor{red!40!white}
\shadowtext{VĂN BẢN ĐƯỢC TÔ BÓNG}
: 2
VĂN BẢN ĐƯỢC TÔ BÓNG
Khoảng cách bóng có thể được điều chỉnh bằng các lệnh
sau:
\shadowoffset{<độ dài>} %trong gói shadowtext.sty
\shadowoffsetx{<độ dài>} %trong gói shadowtext.sty
\shadowoffsety{<độ dài>} %trong gói shadowtext.sty
7 Ví dụ 12.12 8
\shadowoffset{2pt}
\shadowcolor{red!40!white}
\shadowtext{VĂN BẢN ĐƯỢC TÔ BÓNG}
: 2
VĂN
VĂN BẢN
BẢN ĐƯỢC
ĐƯỢC TÔ
TÔ BÓNG
BÓNG
7 Ví dụ 12.13 8
\shadowoffsetx{4pt}
\shadowoffsety{-2pt}
\shadowcolor{red!40!white}
\shadowtext{VĂN BẢN ĐƯỢC TÔ BÓNG}
: 2
VĂNBẢN
VĂN BẢNĐƯỢC
ĐƯỢCTÔ
TÔBÓNG
BÓNG
\setbox1=\hbox{#1}%
\setbox2=\hbox{m}%
\contourlength{1pt}%
\setlength{\ruleht}{0.4pt}%
\setlength{\rulesep}{1.2pt}%khoảng cách giữa các dòngvàchữ
cái"m"
\rlap{\rlap{\rule[-\rulesep-\ruleht]{\wd1}{\ruleht}}%
\rule[\ht2+\rulesep]{\wd1}{\ruleht}}%
\contour{white}{\copy1}%
\endgroup
}
7 Ví dụ 12.14 8
\overunderline{Không có gì đẹp hơn thế}
: 2
Không có gì đẹp hơn thế
7 Ví dụ 12.15 8
\TeX, \LaTeX, \LaTeXe\\
\AmS\\ %trong gói amsmath.sty
\MF, \MP\\ %trong gói mflogo.sty
\XeTeX, \XeLaTeX, \LuaTeX, \LuaLaTeX\\ %trong gói metalogo
.sty
: 2
TEX, LATEX, LATEX 2ε
AMS
METAFONT, METAPOST
XETEX, XELATEX, LuaTEX, LuaLATEX
Nếu bạn muốn sản xuất một tờ giấy lót, hãy viết những điều
sau trong phần mở đầu:
\usepackage{picture,xcolor,atbegshi}
\AtBeginShipout{%
\AtBeginShipoutUpperLeft{%
{\color{blue}%
\put(\dimexpr 1in+\oddsidemargin,
-\dimexpr 1in+\topmargin+\headheight+\headsep+\
topskip)%
{%
\vtop to\dimexpr\vsize+\baselineskip{
\hrule
\leaders\vbox to\baselineskip{\hrule width\hsize\
vfill}
\vfill
}%
}%
}}%
}
Các dòng trẻ ngang trên các trang sẽ tạo ra, có tệp ví dụ
riêng.
Nếu bạn muốn tạo ra một tấm lưới hình vuông, hãy viết
những điều sau trong phần mở đầu:
\usepackage{tikz,eso-pic}
\AddToShipoutPicture{%
\begin{tikzpicture}[remember picture,overlay]
\tikzset{normal lines/.style={black!20,very thin}}
Để làm điều này, hãy thêm phần sau vào phần mở đầu:
\usepackage{tikz}
\newcommand{\Node}[2]{\tikz[remember picture,inner sep=0pt,
outer sep=0pt,
baseline=(#1.base)]\node(#1){#2};}
\newcommand{\Draw}[4][]{\tikz[remember picture,overlay]
\draw[#1](#3)#2(#4);\ignorespaces}
7 Ví dụ 12.16 8
Đầu tiên, \Node{A}{từ đây} vẽ một mũi tên màu đỏ đến dấu bằ
ng của phương trình tiếp theo.
\[5x^2+2x\Node{B}{${}={}$}5.\]
Bây giờ \Node{C}{\fbox{từ đây}} vẽ một mũi tên màu xanh lam
tới từ trước đó "từ đây". Cuối cùng, \Node{D}{\textit{
từ chỗ này}}, chúng ta vẽ một mũi tên màu hồng cho dấu
bằng và một mũi tên màu xanh lục cho cột thứ hai của hà
ng đầu tiên của bảng sau.
\begin{center}
\begin{tabular}{|c|c|}
\hline
1 & \Node{E}{ide} \\
\hline
2 & 3 \\
\hline
\end{tabular}
\end{center}
\Draw[->,color=red]{to[out=-30,in=130]}{A}{B}
\Draw[>->.>,>=stealth,color=blue]{to[bend left]}{C}{A}
\Draw[<.-.>,color=green,>=latex,line width=4pt,opacity=.5]{
to}{D}{E}
\Draw[->,color=pink,line width=2pt]{--+(0mm,3mm)-|}{D}{B}
: 2
Đầu tiên, từ đây vẽ một mũi tên màu đỏ đến dấu bằng của
phương trình tiếp theo.
5 x 2 + 2 x = 5.
Bây giờ từ đây vẽ một mũi tên màu xanh lam tới từ trước đó
"từ đây". Cuối cùng, từ chỗ này, chúng ta vẽ một mũi tên màu
hồng cho dấu bằng và một mũi tên màu xanh lục cho cột thứ
hai của hàng đầu tiên của bảng sau.
1 ide
2 3
\Node chọn các điểm và \Draw kết nối chúng. “Hình dạng của
đường thẳng” cho biết hình dạng của đường kết nối:
to Đường thẳng.
to[bend left] Đường cong bắt đầu rẽ trái.
to[bend right] Đường cong bắt đầu rẽ phải.
to[out=<angle1>,in=<angle2>] thành Đường cong bắt đầu ở
góc <angle1> độ và <angle2> độ đến một góc.
- -+ (<koord1>mm, <koord2>mm) - | Đường đứt đoạn có điểm
bắt đầu được nối với nhau bằng thêm một điểm có tọa
độ tương đối (<koord1>mm, <koord2>mm), nằm ngang, tiếp
theo là một đường thẳng đứng.
Tùy chọn <loại mũi tên> (không có mũi tên theo mặc định, chỉ
có dòng):
Sau đó, viết những điều sau vào nội dung tài liệu:
7 Ví dụ 12.17 8
% VĂN BẢN XANH LÁ CÂY
\begin{tikzpicture}[baseline=-3pt]
\path[decorate,
decoration={text effects along path, text={{Đ}{Ồ} S{Ơ}N},
text effects/.cd,scale text to path, text effects={text=
green},
character widths={inner xsep=1pt}}](0,0) -- (3,2);
\end{tikzpicture}
% VĂN BẢN XANH
\begin{tikzpicture}[baseline]
\path [decorate,
decoration={text effects along path,text={{Đ}{Ồ} S{Ơ}N},
text effects/.cd,text along path,scale text to path},
text effects={text=blue,
N
Ơ N ƠN
SƠ S S
ĐỒ ĐỒ ĐỒ
Đối với ví dụ sau, hãy nhập nội dung sau vào phần mở đầu:
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\usepackage[outline]{contour}
Sau đó, viết những điều sau vào nội dung tài liệu:
7 Ví dụ 12.18 8
\begin{tikzpicture}[baseline]
\def\mycontour#1{\contour{red}{#1}}
\path[decorate,
decoration={text effects along path,text={H{Ả}I PH{Ò}NG},
text effects/.cd,text along path,scale text to path,
characters={font=\color{white},character command=\mycontour
,
xslant=0.6666}},
text effects={character widths={inner xsep=0pt}}](0,0) -- (
3,2);
\end{tikzpicture}
: 2
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
420 Chương 12. Sử dụng thêm phông chữ
N G
P HÒ
Ả I
H
Đối với ví dụ sau, hãy nhập nội dung sau vào phần mở đầu:
\usepackage{tikz}
\usetikzlibrary{decorations.text}
Sau đó, viết những điều sau vào nội dung tài liệu:
7 Ví dụ 12.19 8
\begin{tikzpicture}[baseline]
\path [decorate,
decoration={text effects along path,
text={NGUY{Ễ}N H{Ữ}U {Đ}I{Ể}N},
text effects/.cd,text along path,scale text to path},
text effects={text=magenta,
character widths={inner xsep=0pt}}](0,0)..controls (3,3)
and (6,-3)..(10,0);
\end{tikzpicture}
: 2
GUYỄN
N HỮ
U ĐIỂN
Lưu ý rằng trong các ví dụ trước, các chữ cái có dấu phải
được đặt trong dấu ngoặc đơn làm. Ví dụ: {Đ}{Ồ} S{Ơ}N.
Để hiển thị điều này, trước tiên hãy viết như sau trong phần
mở đầu:
\newcount\hour \newcount\minute
\hour=\time \divide \hour by 60
\minute=\time
\loop \ifnum \minute > 59 \advance \minute by -60 \repeat
\makeatletter
\def\hourminute{\number\hour:\two@digits{\minute}}
\makeatother
Giả sử thời gian để dịch một tài liệu là 693 phút, tức là 11
giờ 33 phút.
\number\time: 543
\number\hour: 9
\number\minute: 3
\hourminute: 9:03
Có thể sử dụng lệnh sau thay cho lệnh \hourminute đã xác định
trước đó:
\currenttime % trong gói datetime.sty
12.14 Mã QR code
7 Ví dụ 12.20 8
Nguyễn Hữu Điển https://vietex.blog.fc2.com/
422 Chương 12. Sử dụng thêm phông chữ
7 Ví dụ 12.21 8
\fbox{\qrcode[height=2cm]{https://nhdien.wordpress.com/}}
\hspace*{1cm}
\fbox{\qrcode[height=2cm,hyperlink]{http://www.hus.vnu.edu.
vn/vi}}
: 2
12.15 Mã vạch
Bạn có thể sử dụng gói GS1 để tạo mã vạch. Cho đến nay,
đây chỉ là EAN-8 và mã vạch tiêu chuẩn EAN-13 có thể được
tạo, nhưng chúng dự kiến sẽ được tạo sau gia hạn. Sử dụng
như sau:
\EANBarcode [module_height=<height>]{<number>}
Mã vạch của cuốn sách "Thực hành tính toán trong Maple"
7 Ví dụ 12.22 8
\EANBarcode[module_height=2cm]{ISBN 978-604-62-1901-9}
: 2
9 786046 219019
Đây chỉ là một ví dụ, Bạn có thể tìm thấy mô tả rất chi tiết
và nhiều ví dụ khác trong hướng dẫn gói
7 Ví dụ 12.23 8
\pgfornament[color=blue,width=2cm,ydelta=-10pt]{25}%
\pgfornament[color=green,width=2cm]{9}%
\pgfornament[color=red,width=2cm,ydelta=+10pt]{10}%
: 2
7 Ví dụ 12.24 8
\pgfornament[height=8mm,ydelta=-5pt,color=cyan]{11}%
{\Large\bfseries NẾU ANH KHÔNG GẶP EM}%
\pgfornament[height=8mm,ydelta=-5pt,color=cyan]{14}\\
\pgfornament[anchor=south,height=1cm]{84}
: 2
NẾU ANH KHÔNG GẶP
EM
7 Ví dụ 12.25 8
\newcommand{\framesize}{8 cm}
\begin{tikzpicture}[color=red,%%Maroon,
transform shape,
every node/.style={inner sep=0pt}]
\node[minimum size=\framesize,fill=yellow!10](vecbox){};
\node[anchor=north west] at (vecbox.north west){%
\pgfornament[width=0.2*\framesize]{63}};
\node[anchor=north east] at (vecbox.north east){%
\pgfornament[width=0.2*\framesize,symmetry=v]{63}};
\node[anchor=south west] at (vecbox.south west){%
\pgfornament[width=0.2*\framesize,symmetry=h]{63}};
: 2
THIẾP MỪNG
Các đoạn văn thú vị có thể được tạo bằng gói shapepar.sty.
Một trong những đoạn đặt trong trái tim.
7 Ví dụ 12.26 8
\shapepar\heartshape
Con đường gạch ao bèo hoa tím ngắt
Những ô ăn quan, que chuyền bài hát
Những mùa hè chân đất tóc râu ngô
Quá khứ em không chỉ ngày xưa
Mà ngay cả hôm nay thành quá khứ
: 2
Con đường gạch ao
bèo hoa tím ngắt Những ô
ăn quan, que chuyền bài hát
Những mùa hè chân đất
tóc râu ngô Quá khứ em
không chỉ ngày xưa Mà
ngay cả hôm nay
thành quá
khứ
7 Ví dụ 12.27 8
\diamondpar{
Con đường gạch ao bèo hoa tím ngắt
Những ô ăn quan, que chuyền bài hát
Những mùa hè chân đất tóc râu ngô
Quá khứ em không chỉ ngày xưa
Mà ngay cả hôm nay thành quá khứ}
: 2
Nguyễn Hữu Điển https://www.facebook.com/groups/vietex/
12.17. Đoạn văn hình đặc biệt 427
♦
Con
đường
gạch ao bèo
hoa tím ngắt
Những ô ăn quan,
que chuyền bài hát
Những mùa hè chân đất tóc
râu ngô Quá khứ em
không chỉ ngày xưa
Mà ngay cả hôm
nay thành
quá
khứ
♦
Với sự trợ giúp của gói shapepar, bạn có thể tạo các đoạn
văn có các hình dạng khác và thậm chí tự thiết kế những hình
dạng mới.
Các đoạn văn đặc biệt cũng có thể được tạo bằng gói
fancypar.sty.
7 Ví dụ 12.28 8
\NotebookPar{\vnlipsum[1]}
: 2
1. Sai lầm lớn nhất đời người là dùng sức khỏe để đánh đổi
lấy những vật ngoài thân. Bi ai lớn nhất đời người là dùng
sinh mệnh để đổi lấy phiền não và lãng phí lớn nhất đời người
là dùng tính mạng để giải quyết rắc rối do bản thân mình tạo
ra!
7 Ví dụ 12.29 8
\fancyparsetup{spiral=false,linecolor=green!30!white!90,
interheight=0pt,textcolor=red}
\NotebookPar{\sl\vnlipsum[4]}
: 2
4. Khi tâm linh có xu hướng bình tĩnh lại, tinh thần càng trở
nên vĩnh hằng! Giảm, nén dục vọng xuống thấp một chút,
đẩy lý tính lên cao, tôi, bạn và chúng ta sẽ cảm nhận thấy:
Bình an là phúc, thanh sảng, mới mẻ là lộc và lòng thanh
tịnh không chút dục vọng là thọ!
\usepackage[draft,scale=0.8, xcoord=-15,ycoord=-10]{
draftmark}
\draftmarksetup{pageno=34,angle=60,color=pink!50,mark=Vie\
TeX}
\draftmarksetup{pageno=34,angle=60,mark={
\includegraphics[height=8cm,width=12cm]{muahoa}}}
Không muốn dùng gói lệnh, mà các trang đều chạy chữ
dùng ở đầu văn bản
\usepackage{eso-pic,tikz,graphicx}
\AddToShipoutPictureBG{%
\begin{tikzpicture}[overlay]
\node[rotate=60,color=red!50] at (current page.center)
{\resizebox{!}{60pt}{Vie\TeX}};
\end{tikzpicture}}
\usepackage{eso-pic,xcolor,graphicx}
\newsavebox{\mybox}
\newlength{\myboxheight}
\newlength{\myboxwidth}
\sbox{\mybox}{\rotatebox{60}{\resizebox{!}{60pt}{%
\color{pink!70} Vie\TeX}}}
\settowidth{\myboxwidth}{\usebox{\mybox}}
\settoheight{\myboxheight}{\usebox{\mybox}}
\AddToShipoutPictureBG{\AtPageCenter{%
\hspace{-.5\myboxwidth}\lower.5\myboxheight\hbox{\usebox{\
mybox}}}}
Khi làm văn bản LATEX cần một số câu làm ví dụ, để tránh
gõ đi, gõ lại nhiều lần người ta làm gói lệnh lipsum.sty. Khi
lấy ra một ví dụ nào dùng một trong lệnh sau
7 Ví dụ 12.30 8
\vnlipsum[2]
: 2
2. Dù rất chua chát nhưng sự thật là, nhà ở có sửa to, rộng
hơn thế nào đi nữa cũng chỉ là nơi ở tạm thời. Cái quách sành
mới là nhà ở vĩnh hằng của tất cả chúng ta. Thế nên, nhà
rộng chẳng bằng tâm rộng, tấm lòng rộng mở, bề ngoài an yên
không bằng cõi lòng an yên.
7 Ví dụ 12.31 8
\vnlipsum[6-7]
: 2
6. Người kiếm cớ, vin vào những lý do không có thời gian rèn
luyện cơ thể sớm muộn sẽ phải bỏ thời gian ra để đi chữa bệnh!
7. Vui vẻ là phương thuốc kỳ diệu giúp con người trường
thọ, nỗ lực chăm chỉ là linh đan giúp sức khỏe bền bỉ dẻo dai.
Vận động là sự đầu tư cho sức khỏe, trường thọ là sự báo đáp
sau những ngày tháng chúng ta bỏ ra để rèn luyện thân thể.
Khi bạn đã tạo xong tệp pdf sẽ được chuyển đến máy in,
bạn nên đặt dấu cắt trên các trang cho máy in để làm cho công
việc của họ dễ dàng hơn. Để thực hiện việc này, hãy tạo một
tệp tex với nội dung sau, đính kèm tệp pdf với các dấu câu, sau
đó dịch tệp tex
\documentclass{minimal}
\usepackage{pdfpages,tikz}
\setlength{\paperwidth}{<chiều rộng pdf>+30mm}
\setlength{\paperheight}{<chiều cao pdf>+30mm}
\begin{document}
\AddToShipoutPictureFG{\begin{tikzpicture}[overlay]
\draw ([yshift= 15mm] current page.south west) -- +(10mm,0)
;
\draw ([xshift= 15mm] current page.south west) -- +(0,10mm)
;
\draw ([yshift= 15mm] current page.south east) -- +(-10mm,0
);
\draw ([xshift=-15mm] current page.south east) -- +(0,10mm)
;
\draw ([yshift=-15mm] current page.north west) -- +(10mm,0)
;
\draw ([xshift= 15mm] current page.north west) -- +(0,-10mm
);
\draw ([yshift=-15mm] current page.north east) -- +(-10mm,0
);
\draw ([xshift=-15mm] current page.north east) -- +(0,-10mm
);
\node at ([yshift=-5mm] current page.north) {Bản in};
\end{tikzpicture}}
\includepdf[noautoscale,pages=1-]{<tệp pdf>}
\end{document}
Về gói lệnh tikz, ta chỉ dùng một phần thư viện của nó. Ta
phải khai báo thư viện hình dạng
\usepackage{tikz}
\usetikzlibrary{shapes, shapes.geometric, shapes.symbols,
shapes.arrows, shapes.multipart, shapes.callouts, shapes.
misc}
\newcommand*{\itemi}[3]{%
\footnotesize\protect\tikz[baseline=-3pt]%
\protect\node[fill={#1},shape=#2,draw,inner sep=0.0pt,
line width=0.2mm](n1){\color{-#1}\textbf{#3*}};}
7 Ví dụ 12.32 8: 2
\begin{enumerate}[label=
\itemi{green!50}{star}{\ 1 Nếu Anh không gặp
arabic}] Em
\item Nếu Anh không gặp Em
\item Làm sao Anh thấy được
2 Làm sao Anh thấy
\item Hai ngôi sao có nước được
\item Ở gần kề ngay bên. 3 Hai ngôi sao có nước
\end{enumerate}
4 Ở gần kề ngay bên.
\newcommand*{\itemii}[3]{%
\footnotesize\protect\tikz[baseline=-3pt]%
\protect\node[scale=.4, shade,{#2}, ball color=#1]{\color
{-#1} \LARGE\textbf{#3*}};}
Các đối số của lệnh \itemii hoàn toàn giống như lệnh trên
ta không nhắc lại ở đây. sử dụng lệnh
7 Ví dụ 12.33 8: 2
\begin{enumerate}[label=
\itemii{violet}{star}{\arabic 1 Nếu Anh không gặp
}] Em
\item Nếu Anh không gặp Em 2 Làm sao Anh thấy
\item Làm sao Anh thấy được được
\item Hai ngôi sao có nước
\item Ở gần kề ngay bên. 3 Hai ngôi sao có nước
\end{enumerate}
4 Ở gần kề ngay bên.
Các đối số #1, #2, #3 hoàn toàn toàn như phần trước, và các
thư viện hình của TikZ cũng như vậy.
7 polygon}{\arabic}] 8
Ví dụ 12.34
\begin{enumerate}[\iteme{cyan}{regular
\tightlist
\item Nếu Anh không gặp Em
\item Làm sao Anh thấy được
\item Hai ngôi sao có nước
\item Ở gần kề ngay bên.
\end{enumerate}
: 2
1 Nếu Anh không gặp Em
2 Làm sao Anh thấy được
3 Hai ngôi sao có nước
4 Ở gần kề ngay bên.
2. Định nghĩa môi trường mới mới ba chiều nổi trên mặt
phẳng:
\newcommand*{\itemee}[3]{%
\footnotesize\protect\tikz[baseline=-3pt]%
\protect\node[ scale=.4, shade, {#2}, ball color=#1] {\
color{-#1}\LARGE\textbf{#3{enumi}}};}
Cách dùng các lệnh này giống như ở trên, khác nhau là không
có \label= và thêm tightlist.
Ba đối số giống như các định nghĩa trước. Ta xét một ví dụ:
7 Ví dụ 12.35 8
\begin{tasks}[label=\itemt{yellow}{cloud}{\Alph}](2)
\task* Bài thơ: Nếu ...
\task Nếu Anh không gặp Em
\task Làm sao Anh biết được
\task Có một vầng trăng khác
7 Ví dụ 12.36 8
\begin{tasks}[label=\itemt{green}{kite}{\arabic}](2)
\task Nếu Anh không gặp Em
\task Làm sao Anh biết được
\task Có một vầng trăng khác
\task Lại sáng giữa ban ngày.
\end{tasks}
: 2
1 Nếu Anh không gặp Em 2 Làm sao Anh biết được
3 Có một vầng trăng khác 4 Lại sáng giữa ban ngày.
\footnotesize\protect\tikz[baseline=-3pt]%
\protect\node[ scale=.4, shade, {#2}, ball color=#1] {\
color{-#1}\LARGE\textbf{#3{task}}};}
7 Ví dụ 12.37 8
\begin{tasks}[label=\itemtt{blue}{kite}{\arabic}](2)
\task Nếu Anh không gặp Em
\task Làm sao Anh biết được
\task Có một vầng trăng khác
\task Lại sáng giữa ban ngày.
\end{tasks}
: 2
1 Nếu Anh không gặp Em 2 Làm sao Anh biết được
3 Có một vầng trăng khác 4 Lại sáng giữa ban ngày.
7 Ví dụ 12.38 8: 2
\begin{tasks}[label=\itemtt
{yellow}{cloud}{\Alph}] A Nếu Anh không gặp Em
\task Nếu Anh không gặp Em B Làm sao Anh biết được
\task Làm sao Anh biết được C Có một vầng trăng khác
\task Có một vầng trăng khá
D Lại sáng giữa ban ngày.
c
\task Lại sáng giữa ban ngà
y.
\end{tasks}