Bao gồm trong macro do người dùng xác định không thành công


0

Tôi đang cố gắng sử dụng gpp(Bộ tiền xử lý chung) để thêm một số thông tin bổ sung trước và sau một #include. Mã này như sau:

\define{\code{filename}}{PRE \include{\filename} POST} ==> \code{./t.txt} <==

Và đầu ra:

$ gpp -T t.mkd -o t.out t.mkd:2: error: Requested include file not found

Tôi nghĩ rằng có một vấn đề với việc tham chiếu \filenamevới \includenhư \filenamesẽ chỉ được đánh giá một lần \codeđược gọi trong khi meta meta sẽ lưu trữ các tham số của chúng tại thời điểm xác định (Nếu tôi hiểu tài liệu chính xác).

Tôi đã thử một loạt các công cụ khác nhau và trong khi đây rõ ràng là một loại câu hỏi RTFM, mục đích sử dụng công cụ của tôi quá hạn chế để sử dụng toàn bộ thời gian để học công cụ (và không chỉ thử một bộ tiền xử lý khác và một bộ xử lý khác cho đến khi một thứ chỉ hoạt động đủ tốt - tôi bắt đầu thử nghiệm với gpp vì nó có vẻ khá có khả năng nếu chúng ta cần thêm sau này).

PS: Xin lỗi về việc thiếu các thẻ có liên quan. Tôi không có đủ danh tiếng để tạo thẻ và người duy nhất xuất hiện là macro.

Câu trả lời:


1

Bạn có thể nhận được nhiều câu trả lời hữu ích hơn cho câu hỏi này trên StackOverflow so với SuperUser.

Tuy nhiên, trong thời gian đó, do phiên bản mới nhất của gpp được phát hành năm 2004, có thể khó tìm được người có chuyên môn về nó để hỗ trợ bạn. Nếu sử dụng tiền xử lý khác sẽ là một lựa chọn, tôi muốn đề nghị m4 , mà phiên bản GNU được cập nhật thường xuyên và sử dụng rộng rãi - đặc biệt như một phần của GNU autoconfphần mềm. Trong m4mã tương đương (trong tệp t.m4) sẽ là:

define(`code',`PRE include(`$1') POST')dnl
code(`./t.txt')

Đưa ra một tệp t.txtcó nội dung:

This is the content of the file t.txt.

... lệnh m4 t.m4tạo ra:

PRE This is the content of the file t.txt.
 POST

Đoán chúng tôi sẽ đi với m4 sau đó. Họ cũng có một trình cài đặt cho người dùng Windows là tốt. Cảm ơn.
simendsjo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.