Thay đổi tiêu đề mục lục trong chế độ Org theo ngôn ngữ tài liệu


14

Có tùy chọn nào thay đổi tiêu đề mặc định của mục lục trong chế độ Org không?
Tài liệu của tôi không phải bằng tiếng Anh nên tôi muốn dịch tiêu đề của nội dung.


Câu trả lời

Như JeanPierre đã nói, đó là về cài đặt xuất khẩu. Bạn có thể đặt LANGUAGEở đầu orgtài liệu của mình theo cách này:

#+LANGUAGE: fr

Và tiếng Pháp sẽ được sử dụng làm ngôn ngữ mặc định của tất cả các chuỗi orgtạo ra trong quá trình xuất.
Hằng chịu trách nhiệm về các ánh xạ dịch org-export-dictionarytrong ox.elvà nếu ngôn ngữ của bạn không được hỗ trợ, bạn có thể thả nó ở đó và sau đó eval-defunđể cho ra sự thay đổi mất. Trong trường hợp của tôi:

(defconst org-export-dictionary 
    ...   
    ("Table of Contents"
         ...
         ("sr" :html "Sadržaj" :utf-8 "Sadržaj")
         ...)
    ...)

Tôi đã viết một chức năng ngây thơ có thể hữu ích trong init.el:

(defun org-export-translate-to-lang (term-translations &optional lang)
  "Adds desired translations to `org-export-dictionary'.
   TERM-TRANSLATIONS is alist consisted of term you want to translate
   and its corresponding translation, first as :default then as :html and
   :utf-8. LANG is language you want to translate to."
  (dolist (term-translation term-translations)
    (let* ((term (car term-translation))
           (translation-default (nth 1 term-translation))
           (translation-html (nth 2 term-translation))
           (translation-utf-8 (nth 3 term-translation))
           (term-list (assoc term org-export-dictionary))
           (term-langs (cdr term-list)))
      (setcdr term-list (append term-langs
                                (list
                                 (list lang
                                       :default translation-default
                                       :html translation-html
                                       :utf-8 translation-utf-8)))))))

(org-export-translate-to-lang '(("Table of Contents"
                                 "Sadržaj"
                                 "Sadržaj"
                                 "Sadržaj")
                                ("Another term"
                                 "coilogji"))
                              "sr")

Khước từ

Nó không hoạt động nếu bạn muốn xuất qua latex (latex được sử dụng khi Org xuất sang PDF). Nhìn vào câu trả lời và ý kiến ​​của Tyler.


Định dạng nào bạn đang xuất sang? PDF, html, hay?
Tyler

@TylerI Tôi xuất khẩu chủ yếu sang ODT và HTML.
foki

Câu trả lời:


3

Hướng dẫn sử dụng Org nói điều này về cài đặt xuất (bạn sẽ có thể duyệt nó trong thông tin emacs C-h i m Org m exporting):

'NGÔN NGỮ'

Ngôn ngữ được sử dụng để dịch một số chuỗi ('org-export-default-ngôn ngữ'). Ví dụ: '# + NGÔN NGỮ: fr' sẽ bảo Org dịch File (tiếng Anh) sang tiếng Fichier (tiếng Pháp) trong đồng hồ.

Tôi đã không thử nó nhưng tôi hy vọng nó sẽ làm những gì bạn muốn.


1
Không đủ cho tất cả các nhà xuất khẩu, đối với xuất khẩu latex, bạn có thể muốn xem câu trả lời @ rené.
Jocelyn delalande

9

Như câu trả lời của JeanPierre đã chỉ ra, bạn cần chỉ định cài đặt xuất ngôn ngữ. Đối với tiếng Pháp, dòng tiếp theo thực hiện công việc:

#+LANGUAGE: fr

Không có tất cả các ngôn ngữ được hỗ trợ và, như bạn đã nói, có thể thấy những ngôn ngữ nào đang xem org-latex-export-dictionarybiến (bạn có thể sử dụng lệnh emacs C-h vsau đó viết tên biến). Một số ngôn ngữ có thể chỉ được hỗ trợ một phần hoặc không được hỗ trợ như tiếng Serbia. Nếu bạn muốn nó hoạt động với một ngôn ngữ không được hỗ trợ, hãy thêm các chuỗi đã dịch vào biến và tốt nhất là gửi chúng cho các nhà phát triển để nó kết thúc chế độ org.

LaTex và PDF

Nếu bạn đang xuất sang LaTex và muốn cho Babel thay đổi văn bản, hãy sử dụng:

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}

Điều này sẽ hoạt động trong cả HTML và latex vì từ khóa AUTO sẽ được thay thế bằng tên ngôn ngữ Babel tương ứng. Để xem ngôn ngữ nào được hỗ trợ, hãy xem org-latex-babel-language-alistbiến. Không phải tất cả các ngôn ngữ có sẵn trong Babel đều có nhưng tiếng Serbia đang hoạt động (đã thử nghiệm và "Nội dung" xuất hiện dưới dạng "Sadržaj").

Nếu ngôn ngữ của bạn không có org-latex-babel-language-alistnhưng có sẵn ở babel, như Breton, hãy sử dụng:

#+LANGUAGE: br
#+LATEX_HEADER: \usepackage[breton]{babel}

Như Breton không có trong org-latex-export-dictionarycác LANGUAGEbiến sẽ không làm bất cứ điều gì để xuất khẩu HTML, nó sẽ bằng tiếng Anh, nhưng là cần thiết. Đó là bởi vì những gì sẽ kết thúc trong file LaTex sẽ \usepackage[breton, <default-lang>]{babel}nơi default-langsẽ là tiếng Anh nếu LANGUAGEkhông có mặt và ngôn ngữ cuối cùng được coi là mặc định bằng Babel. Như brkhông là org-latex-babel-language-alistchúng tôi kết thúc với \usepackage[breton, ]{babel}, có Breton là mặc định.

Nếu Breton được thêm vào org-latex-babel-language-alistnó sẽ vẫn hoạt động ( \usepackage[breton, breton]{babel}). Nếu Breton được bao gồm trong org-latex-export-dictionarynó bây giờ cũng sẽ hoạt động trong HTML. Nếu Breton không được babel hỗ trợ thì dù sao nó cũng sẽ hoạt động bằng tiếng Anh, vì vậy cấu hình này là thứ mang lại cho bạn càng nhiều ngôn ngữ được chỉ định càng tốt với tiếng Anh. Tôi thay vì sử dụng AUTOnếu có sẵn vì chỉ có một nơi để đặt ngôn ngữ.

Nếu bạn không thích những gì Babel đặt là "Nội dung" nhưng vẫn muốn sử dụng nó, bạn có thể làm một cái gì đó như:

#+LANGUAGE: en
#+LATEX_HEADER: \usepackage[AUTO]{babel}
#+LATEX_HEADER: \addto\captionsenglish{\renewcommand\contentsname{Outline}}

Điều này giống như câu trả lời của Tyler nhưng dành cho Babel.


Cảm ơn! Nó hoạt động để xuất pdf tiêu chuẩn nhưng không hoạt động với xuất Beamer slide.
foki

4

Nếu bạn đang xuất sang PDF, chế độ org sẽ gọi LaTeX để thực hiện chuyển đổi. Trong trường hợp đó, bạn sẽ có thể chèn lệnh LaTeX để thay đổi tiêu đề TOC với dòng sau:

#+LATEX_HEADER: \renewcommand*{\contentsname}{My Table of Contents Header}

Đặt nó ở đầu tệp của bạn và thử xuất.


Tôi hiện không có môi trường LATEX được đặt vì vậy tôi không thể thử nó với PDF. Bây giờ tôi muốn xuất sang ODT và HTML vì vậy lệnh LATEX không trợ giúp ở đây (cho tôi biết nếu tôi sai).
foki

1
Khi xuất khẩu sang LaTeX, bạn nên sử dụng xử lý riêng LaTeX của ngôn ngữ \usepackage[mylanguage]{babel}.
JeanPierre

@JeanPierre Tôi vừa nhận thấy một hành vi kỳ lạ. Cách tiếp cận của Tyler không làm việc cho tôi, nhưng hành vi biểu hiện sử dụng JeanPierre là thậm chí thú vị hơn - tôi đã tuyên bố cả hai, #+LANGUAGE: fr#+LATEX_HEADER: \usepackage[english]{babel}và trong trường hợp này tôn trọng xuất khẩu cao su thiết lập đầu tiên và chuyển chuỗi trong các đối tác Pháp. Nếu tôi khai báo detrong lần đầu tiên và frenchhoặc frenchbtrong lần thứ hai - deđược sử dụng. Tôi cũng nhận thấy rằng trong các trường hợp được mô tả, nhà xuất khẩu không sử dụng org-export-dictionary, nhiều khả năng nó sử dụng ngôn ngữ latex. Có ý kiến ​​gì không?
foki

@foki xin lỗi, tôi bị thiếu một dấu hai chấm :. Tôi đã sửa câu trả lời của mình.
Tyler

2
Thật kỳ lạ, nếu tôi sử dụng #+LANGUAGE: frriêng, nó bị bỏ qua - LaTeX đầu ra bằng tiếng Anh. Nếu tôi sử dụng nó và #+LATEX_HEADER: \usepackage[english]{babel}, LaTeX kết quả bao gồm dòng \usepackage[english, frenchb]{babel}. Và nếu tôi chỉ sử dụng #+LATEX_HEADER: \usepackage[french]{babel}, không có cài đặt LANGUAGE:, những gì thực sự được chèn vào là \usepackage[frenchb, english]{babel}. Không ai trong số họ thay đổi PDF, nó luôn luôn là tiếng Anh.
Tyler

0

Câu trả lời ngắn: đối với xuất pdf, gói texlive-lang-tiếng Pháp là bắt buộc

org 9.1.9: Cài đặt #+LANGUAGE: frmột mình không có hiệu lực.

làm cho nó xảy ra với

#+LATEX_HEADER: \usepackage[frenchb]{babel}

hoặc là

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.