Hỏi đáp Tách các note chèn sẵn trong file nhưng để ẩn thành một file mới?

Thảo luận trong 'Hỏi đáp - Góp ý' bắt đầu bởi xversion1, 16/11/22.

  1. xversion1

    xversion1 Lớp 3

    Ví dụ như thế này:

    ...“Trông cứ như cửa hàng của Anna Sui<a href="#id1" epub:type="noteref">*</a> ấy.” Một thư viện cá nhân nho nhỏ, phải không?
    Chỉ bấy nhiêu thôi nhưng tôi nghĩ đó là gia tài khổng lồ của Câu lạc bộ Văn học chúng ta đấy.</p>
    <aside epub:type="footnote" id="id1"><p> Một nữ thiết kế người Mĩ gốc Hoa nổi tiếng.</p>

    </aside>
    <p>Chẳng những thế,....


    Phần note của chỗ gạch chân được chèn luôn phía dưới (in đậm), phần này không hiện khi đọc sách vì trong css đã cho footnote thành display: none;

    Mã:
    aside[epub|type~='footnote'] {
       display: none;
    }
    Trong 1 file HTML có nhiều footnote thế này. Thứ nhất là em muốn biết liệu có thể chuyển hết các footnote này vào một file mới một cách nhanh nhất mà ko phải copy/paste từng cái không? File nào có ít em vẫn copy/paste nhưng file có nhiều làm cực quá không làm đc, lúc tìm còn dễ nhầm lẫn hoặc cắt xong id và href dẫn link đến page bị sai dẫn đến link không hoạt động nữa.

    Thứ 2 là một quyển ebook không chỉ có 1 file HTML có nhiều footnote mà có nhiều file HTML, mỗi file có nhiều footnote thì cũng lại có cách nào nhanh nhất để cho tất cả các footnote của tất cả các file HTML vào chung 1 file mới không?
     
    gachi00, huydatvns, machine and 2 others like this.
  2. vinaguy

    vinaguy Lớp 11

    Làm được bác ạ. Em vẫn thường làm suốt, nhưng tùy cấu trúc của mỗi cuốn sách mà chúng ta triển khai nó chứ không có một công thức chung nào cả, nên có thể em sẽ phải hướng dẫn bác "nguyên tắc" làm, và bác tùy biến ở mỗi cuốn sách.
    Đầu tiên: Ví dụ mà bác cho, đang là link một chiều, nó chỉ link từ nội dung sang chú thích mà thôi (không có ngược lại), nên khi nó nằm nguyên vị trí, thì không thành vấn đề gì, nhưng lúc ta dời chú thích về cuối trang thì Chú thích sẽ một đi mà không quay trở lại được. Do đó bác phải làm lại link 2 chiều cho chú thích (Ôi hơi rắc rối trong diễn đạt đây).

    Cách 1: Trả về trạng thái ban đầu và làm chú thích như đã hướng dẫn. (cách này tương đối dễ hiểu, em sẽ hướng dẫn bác cách này trước) cách 2 thì nếu có thời gian chúng ta sẽ bàn tiếp.

    Bước 1:
    Find: <a href="#(.*?)(\d+)" epub:type="noteref">\*</a>
    Replace: [\2]
    Bấm replace all

    Bước 2:
    Find:
    <aside epub:type="footnote" id="(.*?)(\d+)"><p>(.*?)</p>

    </aside>
    Replace: <p>[\2]\3</p>
    Bấm replace all

    Bước 3: Chuyển hết note về 1 trang cuối cùng (Chắc bác đã có và biết cách rồi).

    Bước 4: Bác làm chú thích như bình thường bác vẫn làm. Đó là gắn link cho nội dung và chú thích. Bỏ qua bước đánh số nhé. Cách gắn link thì cũng chỉ đơn giản là bấm replace all 2 phát mà thôi.

    Cách 2: Để nguyên như cuốn sách đang có và chỉ dời Chú thích về một trang cuối cùng rồi quay lại chèn link hai chiều. Cách này khác cách trên là không phải chạy lại chú thích của toàn bộ văn bản, nhưng lại rườm rà đối với học viên mới tập làm (em tạm thời chưa hướng dẫn cách này. Nếu bác có ultraview, em sẽ hướng dẫn trực tiếp trên máy bác 1 lần là bác làm được ngay và luôn.
     
    gachi00, machine, Anan Két and 2 others like this.
  3. xversion1

    xversion1 Lớp 3

    Đã làm xong bước 1, 2 nhưng bước 3 này em không biết làm bác. Bước 4 thì em biết làm.
     
  4. vinaguy

    vinaguy Lớp 11

    OK
    Bước 3:
    Trước hết bác phải tạo ra một cái function (Tham khảo của inno14 nhé)
    Function dưới đây (bước này làm 1 lần và xài mãi mãi nhé): (Bác copy cả đoạn xanh dưới nhé.) Bác mở Calibre lên, và chọn chế độ là Regex Function.
    upload_2022-11-16_16-42-9.png

    Sau khi bác bẩm vào Creat ở phía trên bác được:
    upload_2022-11-16_16-43-41.png

    Bác xóa hết nội dung nó đi và copy đoạn màu xanh dưới đây dán vào chỗ mới xóa nội dung kia và đặt tên là Note Mover chẳng hạn, sau đó bấm OK:
    upload_2022-11-16_16-45-30.png

    #Find: (<p>\(\*{1,}\).*?</p>|<p>\[\d+\].*?</p>|<p>\[\*\].*?</p>)
    def replace(match, number, file_name, metadata, dictionaries, data, functions, *args, **kwargs):
    f=file_name
    note=match.group(1)+f
    print(note)
    return ''
    replace.file_order = 'spine'


    Vậy là bác đã tạo xong Function, giờ bác chuyển nó về 1 file cuối cùng của tài liệu: Bác tạo 1 html nữa, đặt cuối cùng của cuốn sách và đặt tên file là note.html chẳng hạn.
    Sau đó bác chọn như trong hình:
    upload_2022-11-16_16-53-4.png

    Quên mất, em có file word, em gửi luôn cái file word bác học theo nó mà làm chú thích từ đầu trở đi luôn nhé. Vậy mà em tưởng là bác đã biết làm chú thích rồi.
     

    Các file đính kèm:

    huydatvns, machine, Anan Két and 2 others like this.
  5. vinaguy

    vinaguy Lớp 11

    File word đây bác. Nó không cho em chèn file word ở post trên.
     

    Các file đính kèm:

    machine, Anan Két and xversion1 like this.
  6. xversion1

    xversion1 Lớp 3

    Làm được function, bấm thấy chạy không lỗi nhưng nó ko chuyển về file note cuối trang em tạo mà mất hết bác ạ. Không biết có liên quan gì đến file là xhtml và có 1 file nav ở cuối không?

    Edit: Ra là em đọc ko kỹ, phải copy clipboard thủ công. Cứ tưởng bấm phát được luôn. :p
     

    Các file đính kèm:

    Chỉnh sửa cuối: 16/11/22
    machine thích bài này.
  7. tran ngoc anh

    tran ngoc anh Cử nhân

    Mr Inno14 có cách giải quyết một vấn đề tương tự ở đây nè mọi người:

    Vui lòng đăng nhập hoặc đăng ký để xem link
     
  8. huydatvns

    huydatvns Lớp 7

    Mình đang chuyển chú thích có dạng giống bạn nên tiện ghi lại clip, bạn xem thử.
    Lưu ý:
    • Có nhiều cách để thực hiện, mỗi người mỗi kiểu
    • Hãy để ý đến số lượng và vị trí của ghi chú. Sai 1 ly đi 1 dặm (mình toàn đi 1000 dặm :D)
    • Chốt cấu trúc code ghi chú epub3 trước khi làm.
    • File bạn @vinaguy gửi đầy đủ công cụ để xử lý.
    Clip 1: Gom chú thích về 1 file html


    Clip 2: Xoá và làm lại chú thích


    [​IMG]
     

    Các file đính kèm:

  9. vinaguy

    vinaguy Lớp 11

    Bác kiểm tra lại xem, clip của bác ghi nó chỉ chạy được khoảng 30 giây, sau đó là nó không ghi thao tác nữa bác.
     
  10. tran ngoc anh

    tran ngoc anh Cử nhân

    Mình thấy bạn vẫn dùng file text bên ngoài để lưu regex. Không biết có phải để mọi người dễ nhìn khi xem clip hay không? Chứ nếu regex dùng nhiều, lưu vào saved search mới tối ưu.
     
    huydatvns and vinaguy like this.
  11. vinaguy

    vinaguy Lớp 11

    Y bài... ngày xưa em đã nhiều lần đi xin cái save search này của mọi người... nhưng sau đó em cảm giác rằng chỉ mình em với bác hiểu ý nhau... còn các bác khác không share cho em tẹo nào. Giờ thì em đã có một bộ regex đồ sộ của riêng mình, nên xử lý gì cứ rẹc rẹc, chả cần nhớ gì nhức đầu :)
     
    tran ngoc anh thích bài này.
  12. huydatvns

    huydatvns Lớp 7

    Mình thấy bình thường mà, ko thì bạn tải link này về
    Vui lòng đăng nhập hoặc đăng ký để xem link
     
    vinaguy thích bài này.
  13. huydatvns

    huydatvns Lớp 7

    Đúng rồi, mình làm để mọi người dễ nhìn. Bạn để ý sẽ thấy tab saved search của mình :D.
     
    tran ngoc anh thích bài này.

Chia sẻ trang này