Không biên dịch ra tiếng Việt được với kiểu văn bản amsart

BBạn Loan có hỏi Math2IT là tại sao bạn dùng kiểu văn bản amsart để soạn thảo một bài báo khoa học về Toán nhưng khi biên dịch thì tiếng Việt hiển thị không đúng. Do tính chất riêng tư của tài liệu nên Math2IT không có đăng lên đây để bạn đọc theo dõi. Math2IT chỉ muốn nói vài ý về file .tex mà bạn ấy gởi như sau

  1. amsart là một gói lệnh định dạng văn bản cũng tương tự như article  dùng trong \documentclass , tuy nhiên gói này tập trung chủ yếu cho việc gõ các tài liệu toán học. 
  2. Có thể tóm tắt sơ qua nội dung chính của file tex mà bạn ấy gởi như sau

Bạn thấy rằng trong đoạn code trên, đã thiếu một dòng lệnh rất rất cơ bản để có thể biên dịch được tiếng Việt trong LaTeX, đó chính là dòng lệnh

Sau một hồi “thử và thay”, tôi phát hiện vấn đề nằm ở nội dung của \title{...} . Nếu như trong \title{...}  bạn chỉ dùng tiếng Anh thì sẽ biên dịch hoàn toàn bình thường. Nhưng khi bạn dùng tiếng Việt thì sẽ xuất hiện lỗi như trên, tại sao vậy?

Lý do là vì gói lệnh amsart dùng một phương thức đặc biệt để viết in hoa trong cái tựa đề mà cách thức này lại không hỗ trợ utf8 . Thành ra khi biên dịch sẽ gặp lỗi ngay chỗ cái tựa đề nếu ta dùng tiếng Việt (hoặc các thứ tiếng khác ngoài tiếng Anh, ví dụ như tiếng Pháp).

Để giải quyết vấn đề trên, rất đơn giản, bạn thêm vào gói lệnh sau

Gói lện này cũng hoạt động tốt với utf8x.

Tổng kết lại, chỉ cần thêm vào đoạn code gốc 2 câu lệnh sau là có thể biên dịch ra tiếng Việt một cách bình thường

Đ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.

  • Mai Lan

    Bạn ơi, cho mình hỏi. với đoạn tex sau, Mình dùng trên HDH windown thì chạy bình thường. trong đó mình dùng miktex và texmaker. Nhưng khi chuyển sang ubuntu, dùng texlive, texmaker. không để lệnh tiếng việt thì chạy được, nhưng để lệnh tiếng việt báo lỗi tại dòng sau dong tiếng việt. Tại sao vậy. Giup mình với, cảm ơn bạn

    \documentclass[a4paper,12pt,oneside]{article}
    \usepackage{amssymb,amsthm,makeidx,enumerate,amsmath}
    %\usepackage[utf8]{vietnam}
    \usepackage{fancyhdr}
    \usepackage{longtable}
    \usepackage{graphicx,xcolor}
    \usepackage{extsizes}
    \usepackage{array}
    \usepackage{pifont}
    \usepackage{picinpar}
    \usepackage{diagbox}
    \usepackage{subfig}
    \usepackage[left=2.64cm,right=2cm,top=2cm,bottom=2cm]{geometry}
    \setlength{\parskip}{0.2cm}
    \numberwithin{equation}{section}
    \usepackage{arydshln}
    \usepackage{wrapfig}
    \usepackage{pgf,tikz}
    \usetikzlibrary{arrows}
    \pagestyle{empty}
    \usepackage{multicol}
    \usepackage{pstricks-add}
    \usepackage{pgf,tikz}
    \usetikzlibrary{arrows}
    \usepackage{pstricks}
    %\input{tabvar.tex}

    \makeindex

    \begin{document}

    cộng hòa xã hội chủ nghĩa việt nam

    hello VietNam

    \dfrac{x}{2}=1

    \newpage
    \addcontentsline{toc}{chapter}{\indexname}
    \printindex

    \end{document}

    • Mình chạy thấy không bị lỗi như bạn nói nhưng lại bị một lỗi khác liên quan đến gói lệnh ps-tricks. Bạn thử chạy lại đoạn code dưới đây xem có bị lỗi không nhé. Và bạn copy lỗi mà bạn đã gặp gởi cho mình xem luôn thể nhé.


      \documentclass[a4paper,12pt,oneside]{article}
      \usepackage{amssymb,amsthm,makeidx,enumerate,amsmath}
      \usepackage[utf8]{vietnam}
      \usepackage{fancyhdr}
      \usepackage{longtable}
      \usepackage{graphicx,xcolor}
      \usepackage{extsizes}
      \usepackage{array}
      \usepackage{pifont}
      \usepackage{picinpar}
      \usepackage{diagbox}
      \usepackage{subfig}
      \usepackage[left=2.64cm,right=2cm,top=2cm,bottom=2cm]{geometry}
      \setlength{\parskip}{0.2cm}
      \numberwithin{equation}{section}
      \usepackage{arydshln}
      \usepackage{wrapfig}
      %\usepackage{pgf,tikz}
      %\usetikzlibrary{arrows}
      \pagestyle{empty}
      \usepackage{multicol}
      %\usepackage{pstricks-add}
      %\usepackage{pgf,tikz}
      %\usetikzlibrary{arrows}
      %\usepackage{pstricks}
      %\input{tabvar.tex}

      \makeindex

      \begin{document}

      cộng hòa xã hội chủ nghĩa việt nam

      hello VietNam

      \dfrac{x}{2}=1

      \newpage
      \addcontentsline{toc}{chapter}{\indexname}
      \printindex

      \end{document}

      • Mai Lan

        http://www.upsieutoc.com/image/54i0

        vẫn bị lỗi bạn ạ

        • Math2IT

          Bạn thử biên dịch đoạn code sau đây xem có bị lỗi chỗ tiếng Việt không nhé (tạo một file mới để thử)

          \documentclass{article}

          \usepackage[utf8]{vietnam}

          \begin{document}

          cộng hòa xã hội chủ nghĩa việt nam

          \end{document}

        • Mai Lan

          vẫn bị lỗi y như vậy bạn ạ. hay mình cài tex có vấn đề gì rồi. còn bị luôn cái lỗi font như sau nữa. lúc trước dùng bên win ko sao cả
          http://www.upsieutoc.com/image/54KI

        • Math2IT

          1. Rất có thể bạn chưa chọn UTF8 trong trình soạn thảo của TeXMaker. Cách chọn : Configure TeXMaker > Editor > Editor font encoding > UTF8.

          2. Đoạn code mình đưa bạn thử là đoạn code cơ bản nhất để test xem bạn có thể biên dịch ra được tiếng Việt hay không. Nếu bạn biên dịch mà bị lỗi thì chứng tỏ texlive bạn có vấn đề. Khi cài bạn có dùng “texlive-full” không? Mình đề nghị bạn cài lại texlive bằng dòng lệnh “sudo apt-get install texlive-full”

          3. Bạn gởi cho mình cái file bạn đang làm để mình chạy thử xem.

        • Mai Lan

          http://www.mediafire.com/file/9xmd2gehh8emhs5/vd2.tex

          Mình cảm ơn bạn nhiều nha 🙂

        • Mình đã download file của bạn về, đúng là bị lỗi font khó hiểu. Mình dự đoán là do trình soạn thảo text của bạn chọn bộ gõ không chuẩn nên thế. Hiện tại giải pháp mình có thể nghĩ ra chỉ là xóa và cài lại texmaker và texlive mà thôi hà. Bạn cũng nên thử soạn thảo (gõ lại chứ không phải copy-paste) một đoạn tex đơn giản nào đó bằng một phần mềm khác với texmaker để xem xem vấn đề có phải do texmaker hay ko.

        • lantuan

          Mình cảm ơn bạn. không hiểu sao đang dùng được tự dưng bị vậy. may mà mình còn một bản dự phòng. Tuy ko đủ dữ liệu như bản sau, nhưng đánh lại cũng nhanh hơn được, ko đến nỗi mất hết. Để mình cài thử TeXstudio xem thế nào. Cảm ơn bạn nhiều nhé

      • Mai Lan

        nếu mình để
        % \usepackage[utf8]{vietnam}
        thì chạy bình thường ko bị lỗi gói ps-tricks
        chỉ là chữ tiếng việt ko suất ra được tiếng việt thôi

  • Lam Le Xuan

    Bài viết rất hay và hữu ích, cám ơn tác giả rất nhiều

  • Hoan

    Bạn ơi cho mình hỏi là trước mình dùng gói vietnam thì biên dịch tiếng Việt các phần như part, chapter đều dịch ra tiếng Việt, nhưng nếu sử dụng gói fontspec và biên dịch bằng xelatex thì các chữ trên vẫn giữ nguyên. Bạn cho hỏi làm thế nào để sửa được sang tiếng Việt? Cám ơn bạn.

    • Đinh Anh Thi

      Chào bạn, mặc định trong LaTeX khi bạn đổi ngôn ngữ của toàn văn bản thì nó sẽ đổi luôn ngôn ngữ của các mục cố định như là chapter, section. Lý do gì mà bạn không giữ lại vietnam mà chuyển sang xelatex vậy? Nếu bạn muốn tiếng Việt thì cứ giữ vietnam xem sao.

      Còn nếu bạn muốn vẫn dùng fontspec mà vẫn hiện chữ Chương thì thử đoạn code sau

      \documentclass{book}
      \usepackage[english]{babel}
      \usepackage{fontspec}

      \addto\captionsenglish{\renewcommand{\chaptername}{Chương}}
      \addto\captionsenglish{\renewcommand{\partname}{Phần}}

      \begin{document}
      \part{Test part}
      \chapter{Test chapter}
      \section{Test section}
      \end{document}

      • Hoan

        Cám ơn bạn, tí bật máy tính mình sẽ thử luôn. Lý do mình muốn dùng gói fontspec là vì mình không dùng latex để viết tài liệu toán mà viết tài liệu lập trình, và muốn sử dụng một vài loại font khác nhau cho các mục khác nhau. Việc thay đổi font chữ khi sử dụng gói vietnam mình cảm thấy bất tiện và khá khó hiểu, trong khi sử dụng gói fontspec thì thay đổi font rất dễ. Biên dịch tiếng Việt cũng không gặp lỗi gì, chỉ có vấn đề như đã đề cập ở trên. Nếu được bạn có thể viết một bài về cách thay đổi font chữ trong latex nhé, sẽ rất có ích. Cảm ơn bạn nhiều.

        • OK bạn, mình cũng có ý định viết 1 bài như thế từ lâu nhưng chưa có thời gian, cảm ơn bạn đã gợi ý ý tưởng. Cái mình gởi bạn đúng muc đích của bạn rồi ấy, nó dùng hoàn toàn bằng English, chỉ thay duy nhất chỗ Chương và Phần thôi. 🙂