Hiển thị Hình vẽ & Sơ đồ bằng LaTeX (Texoid)
FPTOJ có khả năng biên dịch và hiển thị trực tiếp các hình vẽ, đồ thị, sơ đồ được vẽ bằng mã LaTeX (ví dụ: TikZ, standalone) lên trang mô tả đề bài. Điều này giúp giáo viên dễ dàng tạo ra các sơ đồ mạng, hình vẽ hình học trực quan mà không cần xuất thành ảnh thủ công.
Hệ thống hỗ trợ tính năng này thông qua dự án Texoid kết nối trực tiếp với công cụ cài đặt LaTeX của Server.
1. Cài đặt các công cụ phụ thuộc trên máy chủ
Texoid sử dụng bộ thư viện biên dịch LaTeX thành định dạng DVI, chuyển đổi sang SVG (dvisvgm) và nén thành PNG (ImageMagick).
2. Cài đặt và Chạy dịch vụ Texoid
-
Clone mã nguồn Texoid và cài đặt trong môi trường ảo:
-
Kiểm tra chạy dịch vụ trên cổng
8886:
3. Cấu hình chạy ngầm bằng Supervisor
Tạo file cấu hình /etc/supervisor/conf.d/texoid.conf:
[program:texoid]
command=/home/<username>/texoid/env/bin/texoid --port=8886
directory=/home/<username>/texoid
user=<username>
autostart=true
autorestart=true
stdout_logfile=/home/<username>/texoid/stdout.log
stderr_logfile=/home/<username>/texoid/stderr.log
Nạp cấu hình cho Supervisor:
4. Cấu hình FPTOJ kết nối tới Texoid
Mở file dmoj/local_settings.py và cấu hình các trường sau:
# Đường dẫn API của dịch vụ Texoid
TEXOID_URL = 'http://127.0.0.1:8886'
# Thư mục lưu trữ hình ảnh sơ đồ đã render (nên chọn thư mục cố định)
TEXOID_CACHE_ROOT = '/home/<username>/site/userdata/texoid_cache'
# URL tương ứng để truy cập thư mục cache từ trình duyệt
TEXOID_CACHE_URL = '/texoid/'
Tạo thư mục đệm và phân quyền:
mkdir -p /home/<username>/site/userdata/texoid_cache
chmod -R 775 /home/<username>/site/userdata/texoid_cache
Cấu hình thêm alias trong file cấu hình Nginx để phục vụ file ảnh tĩnh:
Khởi động lại Nginx và FPTOJ:
5. Cách sử dụng sơ đồ LaTeX trong đề bài
Để tạo hình vẽ LaTeX, hãy bọc mã nguồn LaTeX của bạn bên trong thẻ <latex> trong phần mô tả đề bài:
### Ví dụ về sơ đồ hình vẽ LaTeX:
Hình vẽ dưới đây được vẽ trực tiếp bằng mã LaTeX:
<latex>
\documentclass{standalone}
\begin{document}
$E=mc^2$
\end{document}
</latex>
Khuyên dùng lớp tài liệu \documentclass{standalone} để sơ đồ tự động co giãn ôm khít hình vẽ, hiển thị đẹp nhất trên giao diện web.