Khung định lý, định nghĩa, bổ đề, chứng minh đẹp trong LaTeX

Bài viết giới thiệu đến bạn một đoạn code cho phép tạo khung định lý, định nghĩa, bổ đề, chứng minh đẹp trong LaTeX. Bài viết tham khảo từ texblog nhưng chúng tôi không giải thích quá kỹ lưỡng như bài viết gốc mà chỉ chỉ cho bạn đọc cách làm nhanh nhất có thể. Nếu bạn đọc muốn biết nhiều hơn ý nghĩa của từng câu lệnh, các bạn có thể đọc bài viết gốc này (tiếng Anh).

Dưới đây là đoạn code tổng thể cho văn bản của bạn

Tùy vào mục đích sử dụng, nếu bạn cần khung Định lý, Định nghĩa, Bổ đề hay Chứng minh thì dùng ĐOẠN CODE TÙY CHỈNH tương ứng. Sau đó bạn đọc mục ĐOẠN CODE CÁCH DÙNG để sử dụng cho đúng.

Đoạn code tùy chỉnh 

Khung Định lý

Dưới đây là một số tùy chỉnh cho bạn từ đoạn code trên

  1. Thay dinhly bởi từ khóa nào mà bạn muốn (lưu ý phải ghi liền, không dấu) để sau này bạn dùng kiểu như begin{dinhly}.
  2. Thay thedinhly bởi the+từ nào mà ở trên bạn chọn, trong trường hợp này ở trên tôi dùng dinhly nên bước này tôi dùng thedinhly 
  3. Thay Định lý bởi chữ gì mà bạn muốn.
  4. Màu nền cái chữ Định lý : thay blue!20 bởi màu mà bạn muốn, ở đây !20 có nghĩa là màu blue chỉ nhợt bằng 20% màu blue thông thường.
  5. Màu cái khung bao quanh: thay blue!20 bởi màu mà bạn muốn.

Đây là kết quả

Khung định nghĩa

Lấy ý tưởng từ việc thay các từ khóa có màu ở trên, bạn có thể làm khung định nghĩa y chang vậy bằng cách thay dinhly (bởi dinhnghia), thedinhly (bởi thedinhnghia), Định lý (bởi Định nghĩa). Còn màu thì tùy chọn. Dưới đây là một đoạn code mẫu

Đây là kết quả

Khung bổ đề

Lấy ý tưởng từ việc thay các từ khóa có màu ở mục Định lý, bạn có thể làm khung định nghĩa y chang vậy bằng cách thay dinhly (bởi bode), thedinhly (bởi thebode), Định lý (bởi Bổ đề). Còn màu thì tùy chọn. Dưới đây là một đoạn code mẫu

Đây là kết quả

Khung mệnh đề

Lấy ý tưởng từ việc thay các từ khóa có màu ở mục Định lý, bạn có thể làm khung định nghĩa y chang vậy bằng cách thay dinhly (bởi menhde), thedinhly (bởi themenhde), Định lý (bởi Mệnh đề). Còn màu thì tùy chọn. Dưới đây là một đoạn code mẫu

Đây là kết quả

Khung chứng minh

Cũng lấy ý tưởng từ việc thay thế các từ khóa như ở mục Định lý, ta có đoạn code mẫu cho khung chứng minh như sau

Kết quả

Đoạn code cách dùng

Lưu ý, bạn có thể không cần điền tên của Định lý, Định nghĩa, Bổ đề hay Mệnh đề ở trong ngoặc vuông, khi ấy bạn xóa luôn cái ngoặc vuông đi. Còn cái trong ngoặc nhọn là để bạn dùng ref trỏ đến nó.

+ Khung định lý

+ Khung định nghĩa

+ Khung bổ đề

+ Khung mệnh đề

+ Khung chứng minh

Đinh Anh Thi

Đinh Anh Thi

Sáng lập Math2IT. Hiện Thi đang là nghiên cứu sinh tại Pháp về chuyên ngành Toán Ứng Dụng. Anh mong muốn tổng hợp và chia sẻ kiến thức Toán thực tế, Khoa học ứng dụng và Tin học thường thức đến tất cả mọi người dưới dạng dễ tiếp cận và tự nhiên nhất.

  • Ly Linh

    anh ơi cho em hỏi tại sao khi em đóng khung vào thì chữ cái đầu tiên trong phần nội dung đều bị mất, ví dụ như [math2it..] ….. thì chỉ còn math2it…]… mà mất đi dấu “[” ? Có cách nào khắc phục ko ạ?

    • Chào em, anh đã thử lại code và thấy không bị như em. Em có thể gởi anh file code mà em đã biên dịch bị lỗi để a xem thử không?

      • Ly Linh

        documentclass[12pt,a4paper]{article}
        usepackage[utf8]{vietnam}
        usepackage[framemethod=TikZ]{mdframed}
        usepackage{amsthm}
        usepackage{amsmath}
        usepackage{multicol}
        usepackage{amsfonts}
        usepackage{amssymb}
        usepackage{graphicx}
        usepackage{indentfirst}
        usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
        %—–
        newcounter{dinhly}[section] setcounter{dinhly}{0}
        renewcommand{thedinhly}{arabic{dinhly}}
        newenvironment{dinhly}[2][]{%
        refstepcounter{dinhly}%
        ifstrempty{#1}%
        {mdfsetup{%
        frametitle={%
        tikz[baseline=(current bounding box.east),outer sep=0pt]
        node[anchor=east,rectangle,fill=blue!20]
        {strut Định lý~thedinhly};}}
        }%
        {mdfsetup{%
        frametitle={%
        tikz[baseline=(current bounding box.east),outer sep=0pt]
        node[anchor=east,rectangle,fill=blue!20]
        {strut Định lý~thedinhly~(#1)};}}%
        }%
        mdfsetup{innertopmargin=5pt,linecolor=blue!20,%
        linewidth=2pt,topline=true,%
        frametitleaboveskip=dimexpr-htstrutboxrelax
        }
        begin{mdframed}[]relax%
        label{#2}}{end{mdframed}}
        %—–
        begin{document}

        begin{itemize}
        item Họ và tên: Lý Thảo Linh
        end{itemize}

        begin{dinhly}[Định lý 2.3.1]
        % Nội dung của định lý
        Với mọi f in {L^p}(Omega), 1 le p < infty thì có 1 dãy (s_n) các hàm bậc thang sao cho {s_n} to f trong {L^p}(Omega).\
        end{dinhly}

        Chứng minh:\
        Ta có định nghĩa không gian L^p là tập các hàm đo được f in Omega sao cho {int {left| f right|} ^p}dmu <  infty.\
        Theo định nghĩa 1.3.1 (sách Giải tích thực – Đặng Đức Trọng):\
        Một hàm f được gọi là hàm đo được (theo nghĩa Lebesgue) nếu có một dãy hàm bậc thang s_n in SF(R^k) sao cho :\
        s_n to f, a.s (đpcm)\

        begin{dinhly}[Định lý 2.3.5]
        % Nội dung của định lý
        Cho Omega mở, Omega subseteq R^k. Khi đó {C_c}^infty(Omega) trù mật trong {L^p}(Omega), 1 le p < infty.\
        end{dinhly}

        Chứng minh:\
        Ta có {C_c}^infty(Omega) trù mật trong {L^p}(Omega) nếu f là điểm dính của {C_c}^infty(Omega), forall f in {L^p}(Omega). \
        Nghĩa là, tìm 1 dãy (f_n) subset {C_c}^infty(Omega) sao cho f_n to f, forall f in {L^p}(Omega). \
        ( Leftrightarrow )
        Tìm (f_n) sao cho [left{ {begin{array}{*{20}{c}}
        {{f_n} in C_c^infty (Omega )}\
        {{{left| {{f_n} – f} right|}_{{L^p}(Omega )}} to 0}
        end{array}} right.]\

        Đặt [h(x) = left{ {begin{array}{*{20}{c}}
        {f(x),x in Omega }\
        {0,x in {R^k}backslash Omega }
        end{array}} right.]\
        K_n là dãy của tập compact trong R_k sao cho bigcuplimits_{n = 1}^infty  {{K_n}} = Omegafrac{2}{n} le d(K_n, Omega^c), forall n\

        Xét dãy hàm Dirac p_n in C_c^infty(R^k) thỏa các điều kiện:
        [left{ {begin{array}{*{20}{c}}
        {{p_n} ge 0}\
        {suppp_n subset overline {B(0,1/n)} }\
        {int {{p_n} = 1} }
        end{array}} right.]\

        Đặt g_n = {chi _{{K_n}}}hf_n = p_n*g_n\
        begin{itemize}
        item Chứng minh {f_n} in C_c^infty (Omega ):\
        Ta có supp(f_n) = supp(p_n*g_n) subset overline {suppp_n + suppg_n} (theo mệnh đề 4.18/tr.106/Sách Haim-Brezis).\
        Rightarrow suppf_n subset overline {B(0,1/n)} + K_n subset Omega.(1)\
        Xét f_n = p_n*g_n = p_n*(chi _{K_n}h)h in C_c^infty(Omega)p_n khả vi liên tục trên R^k nên cũng khả vi liên tục trên Omega. Vậy f_n khả vi liên tục đến bậc m trên Omega.(2).\
        Từ (1) và (2):\
        Rightarrow f_n in C_c^infty(Omega).\
        item Chứng minh {{{left| {{f_n} - f} right|}_{{L^p}(Omega )}} to 0}:\
        Trong phần chứng minh này ta sử dụng các định lý trong sách Haim Brezis sau:\
        Định lý 4.22: f in L^p(R^k), 1 le p < infty:
        [(p_n*f) to f] khi n to infty trong L^p(R^k).\

        end{itemize}
        end{document}

        • Ly Linh

          em gửi anh đoạn code, anh xem giùm em với
          em cảm ơn nhiều ạ ^^!

        • Em thêm {} phía sau [tên định lý], ví dụ

          begin{dinhly}[Định lý 2.3.5]{}

          Biên dịch là sẽ được. Cái ngoặc nhọn này dùng để chèn “nhãn” (label) để em có thể dễ dàng gọi lại định lý đó (ref), nếu em không dùng label thì em để trống nó chứ đừng xóa nó.

        • Ly Linh

          dạ em đã sửa lại và biên dịch được rồi, cảm ơn anh!

  • Đinh Anh Thi

    1. Nếu các bạn muốn xóa đi cái chỉ mục đứng trước bộ đếm (muốn Định lý 1 thay vì Định lý 1.1) thì các bạn bỏ đi \arabic{section}. ở hàng thứ 2 trong phần Đoạn code tùy chỉnh. Tuy nhiên khi sang mục mới thì bộ đếm sẽ bị reset lại từ đầu. Nếu bạn muốn bộ đếm vẫn tiếp tục thì xem bên dưới.

    2. Nếu bạn muốn bộ đếm định lý vẫn tiếp tục cho dù sang section khác thì bạn bỏ đi [section] ở dòng đầu tiên trong phần Đoạn code tùy chỉnh.