Gói XR tham khảo ngoài¶
Có một tình huống thế này: bạn viết một luận văn và bản tóm tắt của luận văn đó. Theo quy định, các tham khảo, định lý, phương trình,... trong bản tóm tắt phải được đánh số y hệt trong bản chính (luận văn). Đánh số cho các phương trình thì dễ, vì bạn có lệnh \setcounter để làm việc đó. Nhưng các tham khảo thì sao? Gói xr giải quyết câu hỏi này.
- giả thiết: có tài liệu
main.tex, tài liệusummary.tex - bài toán: từ
summary.tex, tham khảo đến nhãn foobar trongmain.tex
Cách dùng¶
Trong phần mở đầu của summary.tex bạn gõ như sau:
\usepackage{xr}
\externaldocument{main} % main là tài liệu main.tex, nơi bạn lấy tham khảo
% \externaldocument[xyz-]{main} % xyz- là tiền tố để phân biệt
% lệnh \externaldocument có thể dùng nhiều lần
Bây giờ, trong summary.tex, với \ref và \pageref bạn có thể tham khảo đến mọi nhãn đã được khai báo trong main.tex bằng lệnh \label.
Xung đột¶
Có tình huống hiển nhiên, là một nhãn nào đó cùng được khai báo trong main.tex và summary.tex. (Khi đó, lỗi khai báo đúp nhãn sẽ được thông báo). Gói xr không đưa ra cách giải quyết riêng lẻ, mà cung cấp tùy chọn khi gọi lệnh \externaldocument. Tuỳ chọn này (xyz- trong ví dụ trên) chỉ định tiền tố của tất cả các nhãn trong tập tin ngoài được lấy. Ví dụ, khi bạn dùng \externaldocument[xyz-]{main}, thì để lấy nhãn foobar trong main.tex, bạn phải dùng \ref{xyz-foobar}.
Mẹo vặt¶
Đôi khi, trong bản tóm tắt (summary.tex) ta chỉ đơn thuần chép lại các phương trình từ bản chính (main.tex). Khi chép như vậy, ta đồng thời chép luôn các lệnh tạo nhãn \label. Nếu không dùng các tiền tố như ở trên (vì lý do tiện lợi), thì ta có thể nghĩ đến chuyện bỏ qua mọi lệnh tạo nhãn \label trong summary.tex Hãy làm như sau:
% trong summary.tex
\makeatletter
\def\label#1{\relax}
\def\label@in@display#1{\relax}
\makeatother
Bây giờ thì mọi lệnh tạo nhãn bằng \label trong summary.tex đều không có hiệu lực gì cả ;)