4 điểm bởi GN⁺ 2026-01-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là gói cho phép tự động thêm vết cà phê vào tài liệu LaTeX, giúp đơn giản hóa quy trình vốn trước đây phải chèn ảnh thủ công
  • Cung cấp bốn kiểu vết bẩn (A~D) và cho phép tinh chỉnh chi tiết độ trong suốt, kích thước, góc xoay và vị trí
  • Sau khi cài đặt, khai báo \usepackage{coffeestains} rồi dùng các lệnh vết bẩn (\coffeestainA~\coffeestainD) để đặt chúng lên trang
  • Có thể tự do phân phối không bị ràng buộc bản quyền, và mọi hình ảnh vết bẩn đều do tác giả tự tạo, chụp và biên tập
  • Từ phiên bản đầu tiên năm 2009, gói đã liên tục được cải tiến; ở phiên bản 0.5.1 năm 2021, mốc xoay của vết bẩn được đổi từ tâm trang sang tâm vết bẩn

Giới thiệu (Introduction)

  • Gói này cung cấp chức năng thêm hiệu ứng vết cà phê vào tài liệu LaTeX
    • In trực tiếp vết bẩn lên tài liệu để tiết kiệm thời gian chèn thủ công
  • Cung cấp bốn loại vết bẩn
    • Loại A: vết tròn 270° và hai vết bắn nhỏ
    • Loại B: vết tròn 60°
    • Loại C: hai vết bắn màu sáng
    • Loại D: cặp vết bắn song sinh nhiều màu

Cách dùng (Usage)

  • Đặt tệp coffeestains.sty trong thư mục dự án LaTeX hoặc cài vào bản phân phối, sau đó thêm vào phần đầu tài liệu
    \usepackage{coffeestains}
    
  • Mỗi vết bẩn được chèn bằng các lệnh sau
    \coffeestainA{alpha}{scale}{angle}{xoff}{yoff}
    \coffeestainB{alpha}{scale}{angle}{xoff}{yoff}
    \coffeestainC{alpha}{scale}{angle}{xoff}{yoff}
    \coffeestainD{alpha}{scale}{angle}{xoff}{yoff}
    
  • Giải thích tham số
    • alpha: độ trong suốt (0~1)
    • scale: hệ số kích thước (mặc định 1)
    • angle: góc xoay của vết bẩn (0~360 độ)
    • xoff, yoff: độ lệch vị trí tính từ tâm trang (khuyến nghị chỉ định đơn vị)
  • Ví dụ lệnh
    • \coffeestainA{0.9}{0.85}{-25}{5cm}{1.3cm}
    • \coffeestainB{0.7}{1}{-30}{18pt}{-135pt}
    • \coffeestainC{1}{1}{180}{0}{-5mm}
    • \coffeestainD{0.4}{0.5}{90}{3cm}{4cm}

Bản quyền (Copyright)

  • Có thể tự do phân phối, vì tác giả không tin vào khái niệm “tài sản tưởng tượng (imaginary property)”
  • Tất cả các vết bẩn đều do Hanno Rein tự tạo, chụp rồi xử lý bằng GIMPInkscape
  • Chỉ nhận quyên góp dưới dạng cà phê, gửi cho Hanno Rein tại cơ sở Scarborough của Đại học Toronto, Canada

Cải tiến mong muốn (Desired improvements)

  • Hiện mới chỉ hỗ trợ vết cà phê, nhưng trong tương lai cần mở rộng để tự động in cả vết latte, trà, gazpacho và dầu mỡ
  • Cũng đề cập nhu cầu phát triển công cụ của cộng đồng LaTeX để tự động hóa cả những vết bẩn vốn bị đóng thủ công lên tài liệu ở các khoa toán và những nơi tương tự

Lịch sử thay đổi (Change Log)

  • 3 tháng 4, 2009: Hanno Rein công bố phiên bản đầu tiên (0.1)
  • 23 tháng 11, 2010: Evan Sultanik phát triển phiên bản tương thích pdflatex (0.2)
  • 24 tháng 3, 2011: Luis Randez thêm khả năng điều chỉnh kích thước, xoay và độ trong suốt (0.3)
  • 25 tháng 5, 2012: Adrian Robson bổ sung hỗ trợ vết bẩn lệch tâm (0.4)
  • 1 tháng 5, 2021: Patrick Bideault công bố phiên bản kho git (0.5), thay đổi mốc xoay của vết bẩn từ tâm trang → tâm vết bẩn

Phương châm vĩnh cửu (Eternal mottos)

  • “Coffee is great.”
  • “Coffee will save the world.”

Khác

  • Ở trang cuối tài liệu có câu: “Trang này được cố ý để trống, nhưng việc thông báo điều đó đã làm hỏng nó”
  • Phiên bản mới nhất là 0.5.1 (25 tháng 6, 2021)

1 bình luận

 
GN⁺ 2026-01-08
Ý kiến trên Hacker News
  • Thật ngạc nhiên là vẫn chưa ai nhắc đến. Tạo vết cà phê bằng Typst khá là vui
    Nếu LaTeX không phải là tiêu chuẩn trong giới học thuật hay các tạp chí liên quan đến vết bẩn thì có lẽ mọi người đã chuyển sang Typst rồi
    Tất nhiên cũng có thể tạo vết cà phê bằng HTML, nhưng với Markdown thì không thể
    • Dạo này tôi đang viết lại mọi bài báo bằng Rust. Trải nghiệm có được vết cà phê an toàn bộ nhớ khá là thú vị
    • May là có bản port cho Typst. Có thể tham khảo gói fleck cho Typst
    • Typst có bắt buộc đăng ký tài khoản không? Nó là nền web à? Việc có trang đăng nhập dù nói là “phát triển mở” khiến tôi hơi thấy khó hiểu. Tôi cũng tò mò mọi người nghĩ gì về khác biệt giữa LaTeX và Typst
    • Có vẻ làm việc này trong Typst sẽ dễ hơn nhiều so với dùng thư viện này. Chuyện vịt chỉ là đùa thôi
    • Vết cà phê đỉnh nhất vẫn là tự làm trực tiếp bằng Postscript
  • Một đề xuất tính năng — nên có hiệu ứng vết bẩn hai mặt để các trang lẻ/chẵn khớp chính xác với nhau, trông như cùng một vết bẩn
    • Nếu mỗi trang có thêm hiệu ứng mờ dần nhẹ thì sẽ tự nhiên hơn
  • Vết cà phê là cách chắc chắn duy nhất để phân biệt tài liệu đã thực sự được đọc hay chỉ mới được in ra
    Hồi trước một đồng nghiệp ở đại học thỉnh thoảng thêm các vết như vậy vào tài liệu để làm dấu “đã đọc”
    • Vết ly rượu vang là dấu cho biết tài liệu đó đã được chấm xong
  • Chia sẻ một liên kết liên quan — Brown Ring of Quality
    • Có thể tôi đã bỏ lỡ trò đùa, nhưng phần lớn logo trên trang đó có vẻ được lấy cảm hứng từ vòng tròn ensō trong nghệ thuật Thiền
    • Tôi nghĩ việc vẽ một vòng tròn quanh logo là một lựa chọn thiết kế ngớ ngẩn chẳng kém gì gạch chân dưới chữ ký
  • Bản gốc là tài liệu từ năm 2009 — liên kết lưu trữ
    Đồng thời chia sẻ các luồng HN trước đó liên quan: tổng hợp bài cũ, thảo luận liên quan 1, thảo luận liên quan 2
  • Trông thì ngầu đấy, nhưng thực ra chỉ là đặt sẵn các tệp vector đã định nghĩa trước
    Tôi tò mò liệu có thể tạo sinh theo thủ tục các vết cà phê trông chân thực hay không
    • Hoàn toàn có thể. Tôi khuyên bạn nên tự thử
  • Có vẻ đây vẫn là một công việc mới hoàn thiện một nửa. Còn cần bổ sung thêm:
    • vết trà đen
    • vụn bánh mì bị ép giữa các trang giấy
    • vết sốt cà chua
    • sợi tóc, v.v.
      Nếu in trực tiếp những thứ này lên trang thì sẽ tiết kiệm được kha khá thời gian phải tự thêm bằng tay
    • Cứ khoảng mỗi nghìn trang mà có một vết ruồi bị đập bẹp thì sẽ hoàn hảo
  • Tôi thực sự thích dự án này. CV của tôi đã được quản lý bằng LaTeX hơn 20 năm rồi
    Có thể quản lý phiên bản, không gặp mớ hỗn độn định dạng như Word. Nó hoàn toàn tất định (deterministic) nên kết quả luôn ổn định
    Giờ còn có thể dùng LLM để chuyển đổi dễ dàng và tự động sửa cảnh báo. Dù bạn không uống cà phê, CV viết bằng LaTeX vẫn rất đáng khuyến nghị
    • Tôi tò mò không biết có mẫu nào đáng giới thiệu không. Tôi cũng viết bằng LaTeX nhưng mới hài lòng khoảng 98%
  • Tôi từng cảm thấy bị ra rìa ở các công ty phần mềm chỉ vì không uống cà phê. Ai cũng mê cà phê
    • Tôi cũng vậy. Có thể thay bằng trà nhưng cảm giác không hoàn toàn giống. Thỉnh thoảng tôi cầm cự bằng nước ngọt ăn kiêng, nhưng ở công ty thường không có sẵn
    • Hoặc bạn có thể mang theo ấm trà kiểu Trung Quốc rồi bàn về khác biệt giữa các phương pháp pha phổ nhĩ truyền thống và hiện đại, như vậy sẽ giành được sự tôn trọng theo cách riêng
  • Thật vui khi thấy những dự án như thế này. Hồi giữa thập niên 90, khi còn là sinh viên và mới bước chân vào ngành, Internet có rất nhiều dự án nghịch vui như vậy
    • Khi đó chúng tôi đang tạo dữ liệu tổng hợp để huấn luyện OCR cho nhiều hệ chữ khác nhau
      Chúng tôi chuyển các trang web thành PDF với nhiều phông chữ khác nhau, rồi dùng ImageMagick để thêm hiệu ứng làm mờ
      Và tất nhiên, cũng dùng luôn chương trình tạo vết cà phê này