menu
Anh-Thi DINH

LaTeX notes

Posted on 31/03/2018, in Infomation Technology.

Error

  • Underfull \hbox (badness 10000) message (xem thêm ở đây): Cách giải quyết đơn giản chỉ cần xóa đi \\ ở cuối mỗi hàng được báo lỗi.

Maths

  • Gói lệnh cơ bản

      \usepackage{amsmath}
      \usepackage{amsfonts}
      \usepackage{amssymb}
    
  • Phân số đặc biệt: \sfrac{1}{2} , phải dùng gói xfrac.
  • $\Vert \cdot \Vert$: \Vert \Vert
  • $\vert \cdot \vert$: \vert \vert
  • $\langle \cdot \rangle$: \langle \rangle
  • $\left< \cdot \right>$: \left< \right> (fix to content and add some extra space sometime)
  • $u^{\ast}$: \ast
  • $\backslash$: \backslash
  • [[]]: \llbracket \rrbracket
  • $\ell$: \ell
  • Chữ Holder: H{\"o}lder
  • Bỏ in nghiêng italic chỉ một cụm từ trong môi trường theorem latex: dùng \normalfont trước cái muốn bỏ.

Double bracket

\usepackage{xparse}
\NewDocumentCommand{\doubleaccolade}{sO{}m}{
  \IfBooleanTF{#1}
    {\dgalext{#3}}
    {\dgalx[#2]{#3}}%
}
\NewDocumentCommand{\dgalext}{m}{
  \sbox0{
    \mathsurround=0pt % just for safety
    $\left\{\vphantom{#1}\right.\kern-\nulldelimiterspace$%
  }%
  \sbox2{\{}%
  \ifdim\ht0=\ht2
    \{\kern-.625\wd2 \{#1\}\kern-.625\wd2 \}%
  \else
    \left\{\kern-.7\wd0\left\{#1\right\}\kern-.7\wd0\right\}%
  \fi
}
\NewDocumentCommand{\dgalx}{om}{
  \sbox0{\mathsurround=0pt$#1\{$}%
  \sbox2{\{}%
  \ifdim\ht0=\ht2
    \{\kern-.625\wd2 \{#2\}\kern-.625\wd2 \}%
  \else
    \mathopen{#1\{\kern-.7\wd0 #1\{}
    #2
    \mathclose{#1\}\kern-.7\wd0 #1\}}
  \fi
}

Using: \doubleaccolade{}

Triple norm

\usepackage{mathtools}
\newcommand{\mynegspace}{\hspace{-0.12em}}
\newcommand{\lvvvert}{\rvert\mynegspace\rvert\mynegspace\rvert}
\newcommand{\rvvvert}{\rvert\mynegspace\rvert\mynegspace\rvert}
\DeclarePairedDelimiter{\vvvert}{\lvvvert}{\rvvvert}

Using: \vvvert{}

Spacing in align

  • Thêmn space

      \begin{align}
      a+b=c \\[10pt]
      x+y=z
      \end{align}
    
  • Điều chỉnh khoảng cách trước/sau/trong align

      \setlength{\abovedisplayskip}{0pt} % nếu trước [align] là khoảng dài
      \setlength{\belowdisplayskip}{0pt} % nếu sau [align] là khoảng dài
      \setlength{\abovedisplayshortskip}{0pt} % nếu trước [align] là khoảng ngắn
      \setlength{\belowdisplayshortskip}{0pt} % nếu sau [align] là khoảng ngắn
    	
      \setlength{\jot}{0pt} % nếu em muốn tăng khoảng cách giữa các dòng bên trong align
    

Định nghĩa định lý

Định nghĩa, định lý

\ProvidesPackage{thi_theorem}  
\usepackage{amsthm} %theorem/definition/...
%\theoremstyle{definition} %bỏ italic sang thẳng đứng
\newtheorem{theorem}{Theorem}
\newtheorem{definition}{Definition}
\newtheorem{lemma}{Lemma}
\newtheorem{proposition}{Proposition}

Chia cột

  • Có hai cách, cách 1 tự động hoàn toàn

      \usepackage{multicol}
      \setlength{\columnseprule}{1pt}
      \usepackage{color}
      \def\columnseprulecolor{\color{blue}}
    
      \begin{multicols}{3}
      [
      Những thứ ngoài cột
      ]
      inside cột
      \columnbreak
      inside cột
      \end{multicols}
    
  • Cách 2 chỉnh được độ rộng các cột, \usepackage{parcolumns}

      \begin{parcolumns}[colwidths={1=.48\textwidth},rulebetween=false]{2}
        \colchunk{ %left
          content column 1
        }
        \colchunk{ % right
          content column 2
        }
      \end{parcolumns}
    

Inset code

  • Settings
      \usepackage{listings} %insert codes
      \usepackage{color}
      \definecolor{dkgreen}{rgb}{0,0.6,0}
      \definecolor{gray}{rgb}{0.5,0.5,0.5}
      \definecolor{mauve}{rgb}{0.58,0,0.82}
      \lstset{frame=tb,
        language=C++,
        aboveskip=3mm,
        belowskip=3mm,
        showstringspaces=false,
        columns=flexible,
        basicstyle={\small\ttfamily},
        numbers=none,
        numberstyle=\tiny\color{gray},
        keywordstyle=\color{blue},
        commentstyle=\color{dkgreen},
        stringstyle=\color{mauve},
        breaklines=true,
        breakatwhitespace=true,
        tabsize=3
      }
    
  • Có các ngôn ngữ

      C++, Java, HTML, Fortran, Gnuplot, Matlab, Pascal, PHP, PSTricks, R, Python, Scilab, TeX, XML, Mathematica, SQL, VBScript.
    
  • Using

      \code{abc} % without listings
    	
      \lstinline{abc} % inline
    	
      \begin{lstlisting}
      abc
      \end{lstlisting}
    

Table Fugures

Change caption’s position of table in latex

  • If you want caption appears above the table (but it’s in center), put these lines before \begin{document}

      \usepackage{floatrow}
      \floatsetup[table]{capposition=top}
    
  • If you want caption locates above and lest, use the following lines instead (also before \begin{document})

      \usepackage{caption}
      \captionsetup[table]{
        position=above,
        justification=raggedright,
        %labelsep=newline, % <<< label and text on different lines
        singlelinecheck=false
      }
    
  • NOTE that, you need to put \label{} before \tabular, for example

      \begin{table}[!htp]
          \caption{...}
          \label{bang1}
          \centering
          \begin{tabular}{|l|c|r|}
          table's content
          \end{tabular}
      \end{table
    

Continuous numbering (without per chapter) for figures and tables

  • Use below before \begin{document}

      \usepackage{chngcntr}
      \counterwithout{figure}{chapter} % for figures
      \counterwithout{table}{chapter} % for tables
    
  • If you want to number per-section figure in the article class

      \usepackage{chngcntr}
      \counterwithin{figure}{section}
    
  • For equations (no matter what you use \begin{equation} or \begin{align}), just use

      \usepackage{chngcntr}
      \counterwithin{equation}{chapter}
    
  • Keep in mind that, you can number the equation per section in the article class the same way you do with figure or table.

  • You can also use it for footnote, theorem environment also.
  • Especially, you can apply this trick to the numbering of the chapter.

      \usepackage{chngcntr}
      \counterwithout{section}{chapter}
      \counterwithin{chapter}{part}
    
  • Just play with them and read more on the package document.

Hình matlab vào latex

  1. Download file tại đây
  2. Giải nén và lưu tại một thư mục nào đó (sau khi giải nén thì chọn thư mục src)
  3. Set path trong matlab (để sau này dùng ở đâu cũng được)
  4. Mỗi lần chạy xong code matlab và vẽ được hình rồi thì chạy lệnh matlab2tikz('aaa.tex','standalone',true) thì nó sẽ lưu cửa sổ hình cuối cùng vào file tex tên aaa.tex. Option 'standalone',true là để xóa hết khoảng trắng trong hình.
  5. Để sử dụng, thêm % !TEX program = lualatex vào đầu file .tex tạo thành và biên dịch bình thường bằgn Visual Studio code hoặc không cần để thêm dòng đó nhưng phải biên dịch bằng Lualatex.
  6. Nếu bạn không dùng standalone thì cần tạo thêm một file .tex khác có nội dung như sau

     % !TEX program = lualatex
     \documentclass{article}
    	
     \usepackage{pgfplots}
     \pgfplotsset{compat=newest}
     %% the following commands are sometimes needed
     \usetikzlibrary{plotmarks}
     \usepackage{grffile}
     \usepackage{amsmath}
     %% you may also want the following commands
     %\pgfplotsset{plot coordinates/math parser=false}
     %\newlength\figureheight
     %\newlength\figurewidth
    	
     \begin{document}
     \input{aaa.tex}
     \end{document}
    
  • Nếu gặp lỗi TeX capacity exceeded, sorry phát sinh, có thể tham khảo cái này. Đã thử 1 lần thành công, biên dịch bằng lualatex.

Bibtex

Visual studio bibtex: Có thể chạy lỗi (đoán là sai đường dẫn).

  • Mở file bằng texmaker (lưu ý là texmaker ko tự load các thay đổi trên VSC, chỉ có VSC mới load thay đổi trên texmaker)
  • Chạy lualatex > biblatex (thật ra là biber)
  • Quay lại VSC và chạy bình thường (Ctrl+F1)

Before doing that, you need to change bibtex.exe into biber.exe before compiling.

  • In texmaker : Options > Configure texmaker > Commands > Bib(la)tex > change bibtex to biber
  • In WinEdt : Options > Execution modes > Bibtex > Executable field, fill the path to biber.exe (usually, it locates at C:\texlive\2016\bib\win32\biber.exe)

      \usepackage[
          backend=biber,
          style=authoryear,
          natbib=true,
          url=true,
          doi=true,
          eprint=false
      ]{biblatex}
    	
      \addbibresource{myref.bib}
    	
      \printbibliography
    
  • Compile with PDFLarex > Bibtex > PDFLatex > View PDF
  • If you want your bibliography showed in the same page with other fields on your document, use following lines

      \begingroup
      \let\clearpage\relax
      \printbibliography
      \endgroup
    
  • Add link into bibtex reference: Use biber/bibtex to make a bibliography as usual, just add this line before \begin{codument}

      \usepackage[backref=true]{hyperref}
    
  • Thêm thông tin kèm cite

      \cite[Chapter~3]{somebook}
    

Tikz & vẽ vời

Đoạn code cho 1 hình gọn nhẹ

\documentclass[tikz]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
	% code hình vẽ
\end{tikzpicture}

\end{document}

Đoạn thẳng từ (x1,y1) đến (x2,y2)

\draw (x1,y1) --  (x2,y2); % chỉ vẽ đoạn
\draw[->] (x1,y1) --  (x2,y2); % thêm mũi tên
\draw (x1,y1) --  (x2,y2) node[position] {text} ; % thêm text
% position: above, below, left, right, above left,...
\draw[attribute] (x1,y1) --  (x2,y2); % tùy chỉnh thuộc tính đoạn
% attribute: thick/very thick (độ đậm), blue (màu), dash,...

Tam giác hay polygon : vẽ nối nhiều đoạn lại

\draw (x1,y1) --  (x2,y2) -- (x3,y3) ;

Tô màu polygon

\draw[fill=blue, opacity=0.8] (x1,y1) --  (x2,y2) -- (x3,y3) -- (x1,y1) ;
% nếu dùng opacity thì nó sẽ làm mờ luôn cái màu đường
% dùng fill=blue!40 sẽ không làm mờ cái màu đường

Đặt text riêng

\node at (x1,y1) {text};
\node[position,color] at (x1,y1) {text}; % thêm vị trí và màu

Vẽ parabol $y=x^2$

\draw (0,0) parabola (4,4); % từ điểm này đến điểm kia của parabola

Vẽ đường cong nhờ vào các control points

\draw (0,0) .. controls (0,4) and (4,0) .. (4,4); % (0,4) và (4,0) giống như các nút nam châm hút đường đó về hướng đó

Vẽ đường tròn

\draw (2,2) circle (3cm);

Vẽ ellipse

\draw (2,2) ellipse (3cm and 1cm); % dài 3cm, cao 1cm, tâm (2,2)

Vẽ arc

\draw (3,0) arc (0:75:3cm); % đường bắt đầu tại (3,0), góc xuất phát là 0 tại 1 tâm (x0,y0) nào đó của đường tròn, góc kết thúc là 75, bán kính của đường tròn này là 3cm.

Vẽ grid

\draw[step=1cm,gray,very thin] (-2,-2) grid (6,6); % điểm dưới trái đến điểm trên phái (hình vuông)
\draw[step=1cm,gray,very thin] (-1.9,-1.9) grid (5.9,5.9); % bỏ đi cái viền xung quanh grid

Vẽ hệ trục tọa độ (axes)

\draw[thick,->] (0,0) -- (4.5,0) node[anchor=north west] {x}; % lấy mốc tây bắc (chữ sẽ ở đông nam)
\draw[thick,->] (0,0) -- (0,4.5) node[anchor=south east] {y};
% thêm node và số
\foreach \x in {0,1,2,3,4}
    \draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};
\foreach \y in {0,1,2,3,4}
    \draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};

Matlab và tikz

Sau khi vẽ bằng matlab và xuất ra file tex.

  • Nếu muốn chỉnh độ width/height thì bỏ đi cái height, width chỉnh theo \textwidth.
  • Nếu muốn bỏ đi cái viền xung quanh màu đỏ: comment dòng scale only axis
  • Nếu muốn bỏ đi tọa độ và axis, thêm dòng sau vào sau
    \begin{axis}[axis lines=none]
    
  • Tọa độ được ghi là (axis cs:x,y)
Top