Hướng dẫn Giới thiệu biên tập ebook bằng Calibre Editor

Thảo luận trong 'Hướng dẫn chung' bắt đầu bởi inno14, 15/9/17.

  1. Dr. No

    Dr. No Không không thấy

    Phân tích chỗ này:

    * html nội dung:
    Find:
    \[(\d+)\]
    Replace:
    <a id="b\1" href="part0000_split1.html#n\1"><sup>[\1]</sup></a>

    id của chỉ số note trong nội dung là: b1, b2...

    Tên file html chứa chú thích là: part0000_split1.html

    id của chỉ số note dưới file chứa endnote (đích đến) là n1, n2....

    Tương tự:

    * htm chứa chú thích
    Find:
    <p>\[(\d+)\]
    Replace:
    <p id="n\1"><a href="part0000.html#b\1"><sup>[\1]</sup></a>

    id của chỉ số note ở file chứa endnote là: n1, n2...

    Tên file html của nội dung là: part0000.html

    id của chỉ số trên html chứa nội dung (đích đến) là b1, b2...

    Cả 2 lệnh (F&R) trên của bạn Inno đều là gán id cho chỉ số hiện hành đồng thời dẫn đến file html đích, sau đó dẫn đến id của chỉ số tương ứng: chỉ số 1 dẫn đến chỉ số 1 tương ứng, chỉ số 2 dẫn đến chỉ số 2 tương ứng... (và ngược lại cũng tương tự).
     
    Chỉnh sửa cuối: 1/11/18
  2. Gassie

    Gassie Sinh viên năm I

    Add file azw của bạn vào calibre nhưng mở lên gặp báo lỗi không mở được nên mình cũng không xem được code bên trong sai ở đâu.
     
  3. Dr. No

    Dr. No Không không thấy

    Mở file đó (file download về máy ấy) bằng Calibre Editor xem. Tôi ngờ rằng khi add vào thì Calibre đã xử lý rồi.

    Mai tôi sẽ xem thử bằng máy tính.
     
    Trúc Quỳnh Đặng thích bài này.
  4. Trúc Quỳnh Đặng

    Trúc Quỳnh Đặng Moderator Thành viên BQT

    Hầy da... Toàn cao thủ IT ra tay rồi còn lo mí sợ gì nữa :D mà coi bộ ca này khó à, còn khó dài dài chăng :P
    Không liên quan, nhưng sang tháng mới rồi ^^
    Have a nice day, minna!~
     
    tran ngoc anh thích bài này.
  5. Dr. No

    Dr. No Không không thấy

    Khó thì không khó, chỉ cần làm sao để đi đúng đường. Giả sử muốn đi từ quận Hoàn Kiếm - Hà Nội đến huyện Điện Bàn - Quảng Nam thì đầu tiên ta phải đến Quảng Nam, trong tỉnh Quảng Nam thì ta đến Điện Bàn. Chiều quay lại cũng tương tự. Cái khó của IT là không được phép sai dù chỉ một dấu phẩy, dù chỉ một khoảng trắng.
     
    Trúc Quỳnh Đặng thích bài này.
  6. Trúc Quỳnh Đặng

    Trúc Quỳnh Đặng Moderator Thành viên BQT

    Yes, @Dr. No em đã được trải nghiệm :D nên hiểu và thấu, thấm lắm lời anh sấm truyền ^^ bị sai với vấp mấy lần rồi là lại mần lại *từ đầu* oh my gosh :D lần sau là rút kinh nghiệm, làm được tới đoạn nào thấy okie ổn ổn là save bản copy dự phòng liền rồi mới mần sang khâu tiếp - lỡ có bể mánh thì cũng không bị "hư bột hư đường" hết từ khâu "ngâm bột" - cùng lắm là từ khâu "nhào bột" trở đi thoai à :P haha!!!
     
    Dr. No thích bài này.
  7. Dr. No

    Dr. No Không không thấy

    Đây là file các file html xuất ra từ azw3 của bạn @Lan Giao.

    Đúng như tôi đoán, tên file không phù hợp. Ngoài ra, id cũng không phù hợp cho nên link chạy - nói một cách hình tượng - đáng ra phải đến Điện Bàn, Quảng Nam thì nó lại chạy đến Ninh Kiều, Cần Thơ. :D

    Cách sửa: từ file chỉ có chỉ số, chưa có link, bạn áp dụng công thức tạo link y như bạn Inno đã chỉ, nhưng cần đổi tên file html đích đến cho phù hợp.

    Nhớ báo kết quả nhé bạn! :P
     

    Các file đính kèm:

  8. Dr. No

    Dr. No Không không thấy

    Cụ thể cách sửa:

    1. Chuyển về chỉ số không có link:
    Mở file html nào cũng được.
    F: <a (.*?)><sup>\[(\d+)\]</sup></a>
    R: [\2]
    Chọn: Replace all
    Chế độ: All text files

    2. Tạo liên kết cho phần nội dung đến chú thích:
    Mở file part0000.html
    F: \[(\d+)\]
    R: <a id="b\1" href="part0001.html#n\1"><sup>[\1]</sup></a>
    Chọn: Replace all
    Chế độ: Current file

    3. Tạo liên kết ngược lại nội dung cho phần chú thích.
    Mở file part0001.html
    F: <p>\[(\d+)\]
    R: <p id="n\1"><a href="part0000.html#b\1"><sup>[\1]</sup></a>
    Chọn: Replace all
    Chế độ: Current file

    Lưu ý những chỗ tô đậm: tô đậm đen là id hiện hành và id đích đến, tô đậm xanh là file html đích đến.

    Kết quả đính dưới đây.
     

    Các file đính kèm:

  9. Trúc Quỳnh Đặng

    Trúc Quỳnh Đặng Moderator Thành viên BQT

    Ý, bữa em cũng bị lỗi ngay đoạn ni nè Tư ca :D á hihi, rình rình lại học được một mánh mới, hehe, thank Tư ca nhiều nhiều nhá! Oyasuminasai ^^
     
  10. Lan Giao

    Lan Giao Lớp 7

    Hôm nay mình đã làm được chú thích và bước đầu hiểu được 1 số mã html và Css căn bản. Làm được chú thích theo hướng dẫn của các bạn thật nhanh chóng và tiện lợi. Cám ơn bác inno14 và các bạn rất nhiều. Đặc biệt là Dr. No đã không ngại đêm khuya để viết bài hướng dẫn cho mình, có bài bác ấy viết là lúc gần 1h sáng. :D.

    File đính kèm mình có sửa khoảng hơn 20 lỗi chính tả so với các file trước đây.
     

    Các file đính kèm:

    Dr. No and Trúc Quỳnh Đặng like this.
  11. Trúc Quỳnh Đặng

    Trúc Quỳnh Đặng Moderator Thành viên BQT

    Ừa nà. Thoải mái rồi đúng hơm? Ai cũng có lúc bắt đầu ngập ngợ cả mà, rồi sẽ quen và thành thạo dần hoy à, hihi! :p @Lan Giao chúc mừng bạn ni nhá! :D
     
    tran ngoc anh and Lan Giao like this.
  12. inno14

    inno14 Lớp 8

    * Phần thêm 1/1/2019: Làm popup-note với Epub3 cực nhanh, cực đơn giản :D
    1. Cú pháp trình bày chú thích:
    <p>Đoạn văn... Ct*</p>
    <p>*Nội dung chú thích</p>
    [​IMG]

    2. Chạy Function aside-id
    Chế độ tìm kiếm Regex-function, All text files, Replace All
    Tìm: <p>(\*)(.*?)</p>
    Code Function aside-id
    Mã:
    #Find: <p>(\*)(.*?)</p>
    def replace(match, number, file_name, metadata, dictionaries, data, functions, *args,
    **kwargs):
        id_number = '%d' % number
        return '<aside epub:type="footnote" id="id' + id_number + '"><p>' + match.group(2) + '</p></aside>'
    
    # Ensure that when running over multiple files, the files are processed
    # in the order in which they appear in the book
    replace.file_order = 'spine'
    
    [​IMG]
    [​IMG]

    3. Chạy Function Note-link
    Chế độ tìm kiếm Regex-function, All text files, Replace All
    Tìm: (\*)
    Code Function note-link
    Mã:
    #Find: (\*)
    def replace(match, number, file_name, metadata, dictionaries, data, functions, *args,
    **kwargs):
        id_number = '%d' % number
        return '<a href="#id'+ id_number + '" epub:type="noteref">*</a>'
    
    # Ensure that when running over multiple files, the files are processed
    # in the order in which they appear in the book
    replace.file_order = 'spine'
    
    [​IMG]
    [​IMG]

    4. Chạy Function epub3-css-note
    Click đúp vào file css
    Type chữ epub3-note ở dòng đầu tiên của css
    Chế độ tìm kiếm Regex-function, Current file, Replace All
    Tìm: epub3-note
    Code Function epub3-css-note
    Mã:
    #Find: epub3-note
    def replace(match, number, file_name, metadata, dictionaries, data, functions, *args,
    **kwargs):
        return '''@namespace epub "http://www.idpf.org/2007/ops";
    aside[epub|type~='footnote'] {
       display: none;
    }
    '''
    
    # Ensure that when running over multiple files, the files are processed
    # in the order in which they appear in the book
    replace.file_order = 'spine'
    
    [​IMG]
    [​IMG]

    5. Save lại và mở bằng Lithium/Reasily để xem kết quả :D
    [​IMG]

    -----
    Ps: Chúc mọi người nghỉ lễ vui vẻ :D
     
  13. Trúc Quỳnh Đặng

    Trúc Quỳnh Đặng Moderator Thành viên BQT

    @inno14 em tranh thủ hốt xác ẻm ngay và luôn. Haha! Thanks anh inno nhiều nhiều nhá. Chúc anh năm mới nhiều heppi nhen! :D
     
    inno14 thích bài này.
  14. tran ngoc anh

    tran ngoc anh Cử nhân

    Like đậm :)
     
  15. inno14

    inno14 Lớp 8

    * Phần thêm 1/1/2019: Làm Footnote cho kindle e-ink mà không cần dịch chuyển chú giải (azw3 cũng phải ráng đu theo em epub3 đó mà :D)

    1. Cú pháp trình bày chú thích:
    <p>Đoạn văn... Ct*</p>
    <p>*Nội dung chú thích</p>

    [​IMG]

    2. Chạy Function azw3-aside-id
    Chế độ tìm kiếm Regex-function, All text files, Replace All
    Tìm: <p>(\*)(.*?)</p>
    Code Function azw3-aside-id
    Mã:
    #Find: <p>(\*)(.*?)</p>
    def replace(match, number, file_name, metadata, dictionaries, data, functions, *args, 
    **kwargs):
        id_number = '%d' % number
        return '''
        <aside azw3_type="footnote" id="n'''+id_number+'''"><a href="#b'''+id_number+'''">✽ </a> 
           
            <p>'''+match.group(2)+'''</p>
           
            <img/>
       
        </aside>
    '''
    # Ensure that when running over multiple files, the files are processed
    # in the order in which they appear in the book
    replace.file_order = 'spine'
    
    
    [​IMG]
    [​IMG]

    3. Chạy Function azw3-note-link
    Chế độ tìm kiếm Regex-function, All text files, Replace All
    Tìm: (\*)
    Code Function azw3-note-link
    Mã:
    #Find: (\*)
    def replace(match, number, file_name, metadata, dictionaries, data, functions, *args,
    **kwargs):
        id_number = '%d' % number
        return '<a href="#n'+ id_number + '" azw3_type="noteref" id="b' + id_number + '">*</a>'
    
    # Ensure that when running over multiple files, the files are processed
    # in the order in which they appear in the book
    replace.file_order = 'spine'
    
    
    [​IMG]
    [​IMG]

    4. Chạy Function azw3-css-note
    Click đúp vào file css
    Type chữ azw3-note ở dòng đầu tiên của css
    Chế độ tìm kiếm Regex-function, Current file, Replace All
    Tìm: azw3-note
    Code Function azw3-css-note
    Mã:
    #Find: azw3-note
    def replace(match, number, file_name, metadata, dictionaries, data, functions, *args,
    **kwargs):
        return '''aside[azw3_type~="footnote"] {
      display: none;
    }
    '''
    
    # Ensure that when running over multiple files, the files are processed
    # in the order in which they appear in the book
    replace.file_order = 'spine'
    
    
    [​IMG]
    [​IMG]

    5. Save lại và gởi vào kindle để xem kết quả :D
    [​IMG]

    -----
     
    Chỉnh sửa cuối: 26/5/21
  16. inno14

    inno14 Lớp 8

    *Phần thêm 2/1/2019: Function Remove-epub3-note cho azw3. Epub3 có cấu trúc chú thích ở #152 sau khi convert sang azw3 cần phải chạy function remove-epub3-note trước khi chạy function ở #155.
    1. Sau khi convert azw3 sẽ như thế này
    [​IMG]

    2. Chạy Function remove-epub3-note
    Chế độ tìm kiếm Regex-function, All text files, Replace All
    Tìm: <a.*?>(\*)</a>|<aside.*?><p.*?>(.*?)</p></aside>
    Code Function remove-epub3-note
    Mã:
    #Find: <a.*?>(\*)</a>|<aside.*?><p.*?>(.*?)</p></aside>
    def replace(match, number, file_name, metadata, dictionaries, data, functions, *args,
    **kwargs):
        if match.group(1): return '*'
        if match.group(2): return '<p>*' + match.group(2) + '</p>'
    
    # Ensure that when running over multiple files, the files are processed
    # in the order in which they appear in the book
    replace.file_order = 'spine'
    
    [​IMG]
    [​IMG]

    3. Thực hiện các bước ở #155 để tạo Footnote cho kindle :D
     
  17. inno14

    inno14 Lớp 8

    * Phần thêm 3/1/2019: Tạo Epub3 thế nào? :D
    1. New Epub bình thường, mặc định Calibre sẽ tạo epub2 như thế này
    [​IMG]

    2. Click Tools->Upgrade book internals, các bạn sẽ thấy hộp thoại nâng cấp epub3 thành công.
    [​IMG]
    [​IMG]

    3. Tạo Templates để khi new xhtml đúng cấu trúc epub3 (mặc định là cấu trúc xhtml của epub2). Click tổ hợp phím Ctrl+p để vào Preferences. Thẻ Editor settings -> Change templates
    [​IMG]

    4. Xóa hết và dán code này vào hộp thoại Template-html
    Mã:
    <?xml version='1.0' encoding='utf-8'?>
    <html xmlns:epub="http://www.idpf.org/2007/ops" xmlns="http://www.w3.org/1999/xhtml" lang="vi">
    <head>
        <title>{TITLE}</title>
    </head>
    
    <body>
        %CURSOR%
    </body>
    </html>
    
    [​IMG]
     
  18. Bọ Cạp

    Bọ Cạp Moderator Thành viên BQT

    Cám ơn Inno, nhờ sự chỉ bảo tận tình mình làm được chú thích theo kiểu mới (cả epub lẫn azw3), nhanh hơn hẳn, không còn phải bấm cật lực nữa :D
     
    inno14 thích bài này.
  19. inno14

    inno14 Lớp 8

    * Phần thêm 7/1/2019: Chèn cách phát âm từ nước ngoài (tên người, tên thành phố...) vào epub3!
    Các bạn mở Reasily trên android device để trải nghiệm nhe. Cách làm mình cũng ghi trong epub đính kèm rùi, các bạn mở bằng Calibre Editor ra xem code nhé.
     

    Các file đính kèm:

  20. Nhatnguyen_ktxd

    Nhatnguyen_ktxd Lớp 4

    Bác nào rành chỉ em chỗ này chút ạ. Em ko rành về code nhưng tính lại cầu toàn, ko vừa mắt lại muốn sửa. Giả sử file ebook em tải về có những phần chuyển cảnh ngăn cách bởi đoạn *******
    **** này đang căn trái, em muốn căn giữa nên đã chỉnh thêm style trong css. Giờ em muốn find and replace style của nó ngặt nỗi nó có dấu sao * thì em phải làm sao ạ?
    Ví dụ: <p class="pnormal">* * * * *</p>
    thành <p class="pcenter">* * * * *</p>
     

Chia sẻ trang này