Tải bản đầy đủ (.pdf) (9 trang)

MỌI THỨ VỀ LATEX CHO ĐỒ ÁN, LUẬN VĂN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (681.3 KB, 9 trang )

Ph.D student
Email:

Fone: 01699007175

Mọi thứ về LATEX
“Học, học nữa, học mãi”
Đặng Phúc1
/>Fone:01699007175

Tóm tắt nội dung
Trong bài viết này, tơi giới thiệu cho các bạn vài thủ thuật nhỏ trong LATEX. Các
thủ thuật này có lẽ chưa có trong tài liệu tiếng Việt nào. Hy vọng rằng, tài liệu nhỏ
về LATEX này sẽ giúp ích cho các bạn một phần nào đó trong việc soạn giảng hay
viết bài báo, viết sách bằng LATEX được thuận lợi hơn. Tôi muốn nhấn mạnh rằng,
nếu các bạn muốn hiểu được gốc rễ LATEX như thé nào, để có thể tự thay đổi mặc
định cũng như tự tùy chỉnh theo ý muốn của mình thì hãy tìm hiểu nhiều nhất về
LATEX có thể. Đây là phương châm sông của tôi
“Chúng ta chỉ thật sự thất bại khi chúng ta từ bỏ mọi sự cố gắng”

Mục lục
Phần 1.

Tô màu ma trận

1 Tô màu cho ma trận kiểu 1

2

2 Tô màu cho ma trận kiểu 2


2

Đặng Phúc

3 Tô màu cho ma trận kiểu 3

3

4 Tô màu cho ma trận kiểu 4

5

Toán học trong LATEX

6

Phần 2.

1 Ký hiệu véctơ

6

2 Thương và số dư trong phép chia đa thức

6

1 PhD.

1


2

student;

Email:


Ph.D student
Email:

Fone: 01699007175

Phần 1.

Tô màu ma trận
1

Tô màu cho ma trận kiểu 1

Khai báo trước

gói lệnh và đoạn lệnh sau:

\begin{document}

\usepackage[table]{xcolor}
\newcommand\x{\times}
\newcommand\y{\cellcolor{green!10}}

Bây giờ, ta tô màu cho các phần tử của ma trận. Bạn viết code như sau

Code tô màu cho hàng
\left(\begin{array}{cccc}
\rowcolor{red!20}
\x & \x & \x & \x \\
0 & \x & \x & \x \\
\rowcolor{blue!20}
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
\y a & b & \y c & d\\
\end{array}\right)

Kết quả biên dịch







×
0
0
0
a

×
×
0
0
b


×
×
×
0
c

×
×
×
×
d








Code tô màu cho cột
\left(\begin{array}{>{\columncolor{olive!20}}cc>{\columncolor{yellow!20}}cc}
\x & \x & \x & \x \\
0 & \x & \x & \x \\
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
a & b & c & d \\
\end{array}\right)&




Kết quả biên dịch

2







×
0
0
0
a

×
×
0
0
b

×
×
×
0
c

×

×
×
×
d








Tơ màu cho ma trận kiểu 2

Khai báo trước

\begin{document}

gói lệnh và đoạn lệnh sau:

\usepackage[customcolors]{hf-tikz}
\tikzset{style green/.style={
set fill color=green!50!lime!60,
set border color=white,

2


Ph.D student
Email:


Fone: 01699007175

},
style cyan/.style={
set fill color=cyan!90!blue!60,
set border color=white,
},
style orange/.style={
set fill color=orange!80!red!60,
set border color=white,
},
hor/.style={
above left offset={-0.15,0.31},
below right offset={0.15,-0.125},
#1
},
ver/.style={
above left offset={-0.1,0.3},
below right offset={0.15,-0.15},
#1
}
}

Bây giờ, ta tô màu cho các phần tử của ma trận. Bạn viết code như sau
Code tô màu cho hàng

Kết quả biên dịch

\left(\begin{array}{cccc}

\x & \x & \x & \x \\
0 & \tikzmarkin[hor=style orange]{el} \x & \x\tikzmarkend{el} & \x \\
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
\tikzmarkin[hor=style green]{row} a & b & c & d \tikzmarkend{row}\\
\end{array}\right)








×
0
0
0
a

×
×
0
0
b

×
×
×
0

c

Code tơ màu cho cột
\left(\begin{array}{cccc}
\tikzmarkin[ver=style cyan]{col 1}\x & \x & \tikzmarkin[ver=style green]{col 2} \x & \x \\
0 & \x & \x & \x \\
0 & 0 & \x & \x \\
0 & 0 & 0 & \x \\
a \tikzmarkend{col 1} & b & c \tikzmarkend{col 2} & d
\end{array}\right)



Kết quả biên dịch

3

×
×
0
0
b

×
×
×
0
c

×

×
×
×
d








Tơ màu cho ma trận kiểu 3

Khai báo trước
3







×
0
0
0
a

\begin{document}


gói lệnh và đoạn lệnh sau:

×
×
×
×
d









Ph.D student
Email:

Fone: 01699007175

\usetikzlibrary{fit}
\tikzset{%
highlight/.style={rectangle,rounded corners,fill=orange!80,draw,
fill opacity=0.5,thick,inner sep=0pt}
}
\newcommand{\tikzmark}[2]{\tikz[overlay,remember picture,
baseline=(#1.base)] \node (#1) {#2};}
%

\newcommand{\Highlight}[1][submatrix]{%
\tikz[overlay,remember picture]{
\node[highlight,fit=(left.north west) (right.south east)] (#1) {};}
}

Sau đây là code cho tô màu ma trận.

3

8

13

18

23

\[
\mathscr{A} = \left(\begin{array}{*5{c}}
\tikzmark{left}{1} & 2& 3 & * & * \\
6 & 7 & 8 & *& * \\
11 & 12 & \tikzmark{right}{13} & * & * \\
* & * & * & * & *
\end{array}\right)
\Highlight[first]
\qquad
\mathscr{A}^T = \left(\begin{array}{*5{c}}
\tikzmark{left}{1} & 6 & 11 & * \\
2 & 7 & 12 & * \\
3 & 8 & \tikzmark{right}{13} & * \\

* & * & * & * \\
* & * & * & *
\end{array}\right)
\]
\Highlight[second]
%
\tikz[overlay,remember picture] {
\draw[->,thick,orange,dashed] (first) -- (second) node [pos=0.66,above] {Transpose};
\node[above of=first] {$\mathscr{N}$};
\node[above of=second] {$\mathscr{N}^T$};
}

Ở dòng thứ 22 trong code trên, bạn thay “Transpose” bằng từ “Chuyển vị”.

N

N


Kết quả biên dịch

A =



1 2 3
6 7 8
11 12 13
∗ ∗ ∗

















Chuyển vị





AT = 



1
2
3




T

6 11 ∗
7 12 ∗
8 13 ∗
∗ ∗ ∗
∗ ∗ ∗








4


Ph.D student
Email:

4

Fone: 01699007175

Tô màu cho ma trận kiểu 4

Code sau cho ta các khối ma trận trong một ma trận (nôm na kiểu như khối ma
trận Jordan).

Bạn khai báo trước \begin{document} gói lệnh \usepackage{mathrsfs}. Thực ra khai báo gói
này để được chữ M này.
Sau đây là code cho các khối ma trận trong một ma trận.

5

10

15

20

\[ \mathscr{M} = \left( \:
\begin{array}{*{9}{c}}
\cline{1-3}
\multicolumn{1}{|c}{0} & 1 & \multicolumn{1}{c|}{0}
& 0 & 0 & 0 & 1 & 0 & 1 \\
\multicolumn{1}{|c}{1} & 0 & \multicolumn{1}{c|}{1}
& 0 & 0 & 0 & 1 & 1 & 0\\
\multicolumn{1}{|c}{0} & 1 & \multicolumn{1}{c|}{0}
& 1 & 0 & 0 & 0 & 1 & 1\\
\cline{1-3}
\cline{4-6}
0 & 0 & 1 & \multicolumn{1}{|c}{0} & 0 & \multicolumn{1}{c|}{0} & 0 & 0 & 1\\
0 & 0 & 0 & \multicolumn{1}{|c}{0} & 0 & \multicolumn{1}{c|}{1} & 0 & 0 & 0 \\
0 & 0 & 0 & \multicolumn{1}{|c}{0} & 0 & \multicolumn{1}{c|}{0} & 0 & 0 & 0\\
\cline{4-6}
\cline{7-9}
0 & 0 & 0 & 0 & 0 & 1 & \multicolumn{1}{|c}{0} & 0 & \multicolumn{1}{c|}{0}\\
0 & 0 & 0 & 0 & 0 & 1 & \multicolumn{1}{|c}{0} & 0 & \multicolumn{1}{c|}{0}\\

0 & 0 & 0 & 0 & 0 & 1 & \multicolumn{1}{|c}{0} & 0 & \multicolumn{1}{c|}{0}\\
\cline{7-9}
\end{array}
\right)\]



Kết quả biên dịch

M =
















0
1
0
0

0
0
0
0
0

1
0
1
0
0
0
0
0
0

0
1
0
1
0
0
0
0
0

0
0
1
0

0
0
0
0
0

0
0
0
0
0
0
0
0
0

0
0
0
0
1
0
1
1
1

1
1
0
0

0
0
0
0
0

0
1
1
0
0
0
0
0
0

1
0
1
1
0
0
0
0
0


















Bây giò, ta muốn các khối ma trận được tơ màu, thì ta làm thế nào? Bạn hãy
đặt trước \begin{document} gói lệnh sau \usepackage{hf-tikz}
Dưới đây là code cho tô màu các khối trong một ma trận.

5

\[\mathscr{P}=
\left(
\begin{array}{*{9}{c}}
\tikzmarkin{a}(0.1,-0.1)(-0.1,0.35)0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 1\\
0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0\\

5


Ph.D student
Email:


Fone: 01699007175

10

15

0
0
0
0
0
0
0

&
&
&
&
&
&
&

0
0
0
0
0
0
0


&
&
&
&
&
&
&

1\tikzmarkend{a} & 0 & 0 & 0 & 0 & 0 & 1\\
0 &\tikzmarkin{b}(0.1,-0.1)(-0.1,0.35) 0 & 0 & 1 & 0 & 0 & 0\\
1 & 0 & 0 & 0 & 0 & 0 & 1\\
0 & 0 & 0 & 1\tikzmarkend{b} & 0 & 0 & 0 \\
1 & 0 & 0 & 0 &\tikzmarkin{c}(0.1,-0.1)(-0.1,0.35) 0 & 0 & 1\\
1 & 0 & 0 & 0 & 0 & 0 & 1\\
1 & 0 & 0 & 0 & 0 & 0 & 1 \tikzmarkend{c}\\

\end{array}
\right)
\]



Kết quả biên dịch

P=

















0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0


1
0
1
0
1
0
1
1
1

0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0


0
1
0
1
0
1
0
0
0

0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0


1
0
1
0
1
0
1
1
1

















Phần 2.

Toán học trong LATEX

1

Ký hiệu véctơ

−→
Chúng ta biết rằng, với hai điểm A, B bất kỳ, chúng ta có véctơ AB, ký hiệu là AB.
−→


Nếu A ≡ B thì ta quy ước AB là véctơ khơng, ký hiệu là 0 . Tuy nhiên, khi nhìn
vào ký hiệu véctơ này, thấy khơng được chuẩn lắm. Do đó, để ký hiệu véctơ này
được chuẩn, ta làm như sau. Bạn khai báo gói \usepackage{esvect} trước \begin{document}
. Sau đó, ta viết code
Biên dịch
−−−−−−−→

\vv{AB}

Nếu dùng

2

\overrightarrow{AB}

Biên dịch
−−−−−−−→

# »

AB


−→
AB

Thương và số dư trong phép chia đa thức

Cho đa thức f (x) và g(x) trong vành đa thức R[x] (hệ số của đa thức lấy trên trường
số thực R). Khi ta thực hiện phép chia đa thức f (x) cho g(x) thì được thương và số
dư, ta ký hiệu lần lượt là h(x) và r(x). Điều này, có nghĩa là f (x) = h(x).g(x)+r(x),
trong đó deg r(x) < deg g(x). Trường hợp 0 deg r(x) < deg g(x) thì ta nói phép
chia đa thức f (x) cho g(x) là phép chia có dư, cịn trong trường hợp deg r(x) = −∞
(tức là r(x) = 0) thì ta nói phép chia đa thức f (x) cho g(x) là phép chia hết.
6


Ph.D student
Email:

Fone: 01699007175

Bây giờ, vấn đề được đặt ra là làm sao để xác định thương và số dư nhanh nhất
(mà khơng cần tính tốn)? LATEX làm được việc này thật dễ dàng!
Bạn khai báo gói lệnh và đoạn lệnh này trước \begin{document}
\usepackage{polynom}

5

10

15


20

25

30

35

40

\makeatletter
\def\pld@CF@loop#1+{%
\ifx\relax#1\else
\begingroup
\pld@AccuSetX11%
\def\pld@frac{{}{}}\let\pld@symbols\@empty\let\pld@vars\@empty
\pld@false
#1%
\let\pld@temp\@empty
\pld@AccuIfOne{}{\pld@AccuGet\pld@temp
\edef\pld@temp{\noexpand\pld@R\pld@temp}}%
\pld@if \pld@Extend\pld@temp{\expandafter\pld@F\pld@frac}\fi
\expandafter\pld@CF@loop@\pld@symbols\relax\@empty
\expandafter\pld@CF@loop@\pld@vars\relax\@empty
\ifx\@empty\pld@temp
\def\pld@temp{\pld@R11}%
\fi
\global\let\@gtempa\pld@temp
\endgroup

\ifx\@empty\@gtempa\else
\pld@ExtendPoly\pld@tempoly\@gtempa
\fi
\expandafter\pld@CF@loop
\fi}
\def\pld@CMAddToTempoly{%
\pld@AccuGet\pld@temp\edef\pld@temp{\noexpand\pld@R\pld@temp}%
\pld@CondenseMonomials\pld@false\pld@symbols
\ifx\pld@symbols\@empty \else
\pld@ExtendPoly\pld@temp\pld@symbols
\fi
\ifx\pld@temp\@empty \else
\pld@if
\expandafter\pld@IfSum\expandafter{\pld@temp}%
{\expandafter\def\expandafter\pld@temp\expandafter
{\expandafter\pld@F\expandafter{\pld@temp}{}}}%
{}%
\fi
\pld@ExtendPoly\pld@tempoly\pld@temp
\pld@Extend\pld@tempoly{\pld@monom}%
\fi}
\makeatother

Bây giờ, tôi lấy ví dụ sau để chúng ta thấy được sự kỳ diệu mà LATEX làm được.

7


h(x) = 2016x3 − 8065x2 + 40325x − 201625
r(x) = 1010141x4 − 6046x3 + 32262x2 − 161301x − 201627.


2016x3 − 8065x2 + 40325x − 201625
x5 + 5x4 + 0x3 + 0x2 − x − 1
2016x8 + 2015x7
+ 0x6
+ 0x5
+ 0x4
+ 3x3
+ 2x2
−x
−2
8
7
6
5
4
3
− 2016x − 10080x
+ 0x
+ 0x
+ 2016x + 2016x
− 8065x7
+ 0x6
+ 0x5
+ 2016x4 + 2019x3
+ 2x2
7
6
5
4

3
8065x + 40325x
+ 0x
+ 0x − 8065x − 8065x2
40325x6
+ 0x5
+ 2016x4 − 6046x3 − 8063x2
−x
− 40325x6 − 201625x5
+ 0x4
+ 0x3 + 40325x2 + 40325x
− 201625x5
+ 2016x4 − 6046x3 + 32262x2 + 40324x
−2
201625x5 + 1008125x4
+ 0x3
+ 0x2 − 201625x − 201625
1010141x4 − 6046x3 + 32262x2 − 161301x − 201627
Từ đây, chúng ta có được thương là h(x) và số dư r(x) như sau

Kết quả biên dịch

\polylongdiv{2016x^{8} + 2015x^{7} + 0x^6 + 0x^5 + 0x^4 + 3x^3 + 2x^2 -x - 2}{x^5 + 5x^4 - 0x^3 - 0x^2 - x-1}

Bạn viết code (không cần nằm trong cặp $$) như sau

Lời giải. Nếu chúng ta làm thủ cơng thì sẽ mất một khoảng thời gian tương đối lâu. Tuy nhiên, khi ta đã khai
báo gói lệnh và đoạn lệnh trên rồi thì ta chỉ việc viết code như sau để tìm thương và số dư trong phép chia f (x)
cho g(x). LATEX làm cho ta chi tiết q trình tính tốn ln. Đây là một điều mà các chương trình tính khác khơng
có được (chẳng hạn như tơi cũng dùng chương trình Maple để tính nhưng nó chỉ cho kết quả chứ khơng có làm

chi tiết như LATEX biên dịch ra dưới đây). Bạn chú ý phải viết đầy đủ hệ số của hai đa thức f (x) cho g(x), hệ số
nào khơng có thì ta viết số 0 trước biến số.

Cho đa thức f (x) = 2016x8 + 2015x7 + 3x3 + 2x2 − x − 2 và g(x) = x5 + 5x4 − x − 1. Xác định thương và số dư
trong phép chia f (x) cho g(x).

Ví dụ


Ph.D student
Email:

9

Fone: 01699007175



×