VietTUG.org - old forum - threads' archive

thread_id = 3799, contains 3799
id = 3799, parent = 0, thread = 3799, catid = 14, locked = 0, moved = 0,
userid = viettug, ip = 222.254.117.252, time = 2007/07/28 (1185639848) ,
subject = tex rơi vào vòng lặp \"vô tận\", hits = 333, karma = 0+0-,
!! Bài viết này có thể vô ích đối với bạn !!

Với tetex (người dùng Linux), cấu hình chính của hệ thống có trong /usr/share/texmf/web2c/texmf.cnf . Một phần trong tập tin này liệt kê các thư mục mà tex tìm kiếm các gói, và cách thức tìm kiếm:

% // means to search subdirectories (recursively).
% A leading !! means to look only in the ls-R db, never on the disk.
% ...
TEXMFHOME = $HOME/texmf


Bây giờ, xem chuyện gì xảy ra nếu bạn thiết lập HOME=/home/foobar/ (chú ý, có dấu gạch / ở cuối ). Khi đó, TEXMFHOME trở thành /home/foobar//texmf. Sự xuất hiện của hai dấu gạch // khiến TeX hiểu là sẽ tìm kiếm các gói trong thư mục nhà ($HOME) cùng với tất cả các thư mục con của nó. Kết quả là, bất kỳ việc gọi latex filename nào cũng khiến bạn chờ rất lâu, để tex duyệt qua tất cả các tập tin trong $HOME.

Để khắc phục điều này, cần bỏ đi dấu / ở cuối $HOME. Có nhiều cách. Ví dụ
# chạy ở quyền root, thay đổi cho người dùng foobar
$ usermod -d /home/foobar foobar

# hoặc thay đổi trong .bashrc
$ export HOME=/home/foobar

# hay thay đổi lúc chạy latex
$ HOME=/home/foobar latex filename_to_typeset


Cách cuối cùng cho bạn một cách nhanh chóng để kiểm tra sự chậm chạp của tex:
$ HOME=/home/foobar/ latex filename_to_typeset

% nếu muốn xem chi tiết tex đã làm gì
$ HOME=/home/foobar/ strace latex filename_to_typeset


Bạn có thể so sánh hai tập tin ding.intel.txt và ding.stupid.txt có trong file:make_tex_stupid.zip -- hai tập tin này là kết quả của lệnh strace khi biên dịch tập tin ding.tex khi HOME có / và không có / ở cuối.