Được rồi, tôi đã chơi xung quanh một chút nữa và đưa ra một giải pháp, mặc dù đó là một giải pháp khá khó khăn.
Lần thử đầu tiên - pdf_update_command + Okular
Điều này không hoạt động đầy đủ, vì nó sẽ luôn nhảy đến đầu tập tin, sau khi tải lại. Để hoàn thiện, tôi vẫn thêm nó vào.
Trong Okular tắt tự động tải lại bằng "Cài đặt" -> "Định cấu hình Okular" -> Tắt "Tải lại tài liệu và thay đổi tệp".
Thay đổi tệp .latexmkrc thành:
$pdf_previewer = 'start okular --uniuqe %S';
$pdf_update_method = 4;
$pdf_update_command = 'okular --unique %S';
Điều này nói với latexmk rằng nó sẽ thực thi pdf_update_command sau khi cập nhật xong tệp pdf. Những gì không hoạt động, tài liệu trong Okular có thể nhìn thấy mọi lúc trong quá trình biên dịch và được tải lại khi hoàn thành. Thật không may, khi lệnh cập nhật được thực thi, bạn sẽ nhảy đến phần đầu của tài liệu. Đó không phải là điều tôi muốn.
Lần thử thứ hai - pdf_update_command + cp
Vì lần thử trước không thành công, giờ tôi đang đi với giải pháp hackier. Đối với điều này, tải lại tài liệu phải được bật trong Okular.
Các .latexmkrc sẽ trông như thế này:
$pdf_previewer = 'start okular';
$pdf_update_method = 4;
$pdf_update_command = 'cp ~/path/to/doc.pdf ~/path/to/doc_preview.pdf';
Điều này sao chép tệp tài liệu thực tế đến một vị trí xem trước. Vì vậy, Okular cần phải được mở cho tệp xem trước này (và đối với tệp khác, bạn phải đóng tệp thủ công). Điều này chắc chắn không lý tưởng, nhưng nó làm những gì tôi muốn:
- Cập nhật tệp pdf trong nền
- Chỉ cập nhật khi tệp đã sẵn sàng
- Hoạt động trên ssh
Cập nhật (nhờ Sam De Meyer):
Nếu bạn không muốn trình xem trước bắt đầu, hãy để trống $ pdf_previewer:
$pdf_previewer = ''
Mặt khác, nếu bạn thích đóng một cửa sổ hơn là mở một cửa sổ, có thể chỉ định 'doc_preview.pdf' cùng với pdf gốc. Tôi chưa tìm được cách nào, chỉ mở tệp pdf thứ hai:
$pdf_previewer = 'start okular ~/path/to/doc_preview.pdf'
PS: Điều này hoạt động với bất kỳ trình soạn thảo nào tự động tải lại các tệp, ví dụ như evince.