2010-07-14 33 views
11

Tôi đang sử dụng phân vùng MiKTeX 2.8 cho Windows.Làm cách nào để xử lý cảnh báo LaTeX dưới dạng lỗi

Chúng tôi phát triển phần mềm chủ yếu và sử dụng LaTeX để thực hiện hướng dẫn sử dụng của chúng tôi. Chúng tôi sử dụng LaTeX vì:

  • Thật tuyệt vời dưới sự kiểm soát nguồn cho những thay đổi theo dõi, vv
  • Nguồn file không đột nhiên quyết định trở thành tham nhũng, không giống như tài liệu Word.
  • Nhiều tài liệu có thể chia sẻ một phần, vì vậy chúng tôi có thể áp dụng nguyên tắc DRY cho tài liệu của chúng tôi và tránh một số tài liệu không đồng bộ với những tài liệu khác. Bạn có thể có các tài liệu chính trong Word, nhưng tôi đã tìm thấy chúng được flaky như địa ngục.

Là một phần của quá trình xây dựng không giám sát trên máy chủ xây dựng của chúng tôi, chúng tôi xây dựng tài liệu bằng cách sử dụng thực thi texify của MiKTeX. Điều này hoạt động khá tốt.

Tuy nhiên, sự cố xảy ra khi nhà phát triển gặp lỗi (ví dụ: \ ref thành \ label không tồn tại). Một lỗi như vậy chỉ tạo ra một cảnh báo trong LaTeX. Cảnh báo không được chú ý bởi texify, và chúng tôi còn lại với các lỗi trong tài liệu.

Tôi hiện đang có bước xây dựng để quét các tệp nhật ký cho các dòng bắt đầu bằng 'LaTeX Warning' và không thực hiện được nếu có. Điều này hoạt động, nhưng rõ ràng là khá flaky, và có thể cho phép cảnh báo trượt qua. Nó hiện không được sử dụng trên các máy xây dựng cục bộ trên các máy dev, nhưng nếu đó là cách duy nhất để làm điều đó, tôi có thể phải tích hợp nó với trình soạn thảo chúng tôi hiện đang sử dụng (TeXworks được xuất xưởng với MiKTeX).

Tôi muốn không xây dựng nếu có bất kỳ cảnh báo nào như tham chiếu chưa xác định xảy ra và tôi không muốn quét các tệp nhật ký không ổn định. Có điều gì cung cấp tính năng này không?

Nếu tôi có thể sử dụng tính năng này trong các bản dựng cục bộ trên máy dev cũng như trên máy chủ xây dựng, nó sẽ là một phần thưởng lớn.

+2

Bạn cũng nên thử hỏi tại http://tex.stackexchange.com – Novelocrat

Trả lời

4

Sau đây (chưa được kiểm tra) mã nên biến bất kỳ cảnh báo vào một lỗi:

\renewcommand{\GenericWarning}[2]{\GenericError{#1}{#2}{}{This warning has been turned into a fatal error.}} 

Sau đó, bạn có thể quan tâm đến các silence gói để lọc các cảnh báo.

Tuy nhiên, bạn cũng sẽ cần sắp xếp để thực hiện điều này chỉ cho lần chạy LaTeX cuối cùng, vì một số cảnh báo như tham chiếu không xác định sẽ được mong đợi trong lần chạy đầu tiên.

Trình chỉnh sửa có hỗ trợ LaTeX tốt sẽ cho bạn biết liệu bạn có cần chạy lại LaTeX (không phải TeXworks thực hiện không?). Họ làm điều đó bằng cách phân tích cú pháp đầu ra của bàn điều khiển hoặc tệp nhật ký. Đó là trong thực tế hợp lý mạnh mẽ (và nếu bạn đang thực sự lo lắng bạn có thể xác định lại \GenericWarning để thêm một chuỗi đặc trưng cho tất cả các cảnh báo). Tôi nghĩ rằng phân tích cú pháp các bản ghi là cách đúng đắn để làm điều đó.

Hãy coi đây là thử nghiệm để chạy đối với tài liệu. Nếu có các tham chiếu không xác định, việc xây dựng tài liệu thành công. Các sản phẩm xây dựng là bản pdf (hoặc bất kỳ thứ gì) và các bản ghi TeX. Kiểm tra cảnh báo trong nhật ký là một thử nghiệm.

1

Tốt nhất nên làm điều này thông qua việc quản lý công việc Latex, nhưng tôi không biết cách nào để làm điều đó.

Dưới đây là một số băng keo chưa được kiểm tra có thể hữu ích:

 
\def\exitfromtex{\nonstopmode\read16to\dummy} 
\let\writerrmessage\errmessage 
\def\errmessage#1{\writerrmessage{#1}\exitfromtex} 

Nó có thể được đặt vào một tập tin gói mà bạn yêu cầu documenters bạn để bao gồm, hoặc nướng vào Latex địa phương của bạn .fmt tập tin.

+0

Cảm ơn Charles, tôi sẽ dùng thử trong vài ngày tới. –

Các vấn đề liên quan