2010-03-17 6 views

Trả lời

5

Viết

\edef\xxx{Any text with any commands. For example, $\phantom x$.} 

Và sau đó cho đầu ra trong nhật ký-file

\show\xxx 

hoặc cho đầu ra trong tài liệu của bạn

\meaning\xxx 
3

Không có "tiền xử lý" trong TeX. Văn bản thay thế cho bất kỳ chuỗi điều khiển nào ở bất kỳ giai đoạn nào cũng có thể thay đổi (điều này được sử dụng cho rất nhiều thứ!). Ví dụ:

\def\demo{\def\demo{cde}} 
\demo 

trước tiên sẽ xác định \ demo theo một cách và sau đó thay đổi. Trong cùng một cách, bạn có thể chuyển hướng các nguyên thủy TeX. Ví dụ, hạt nhân LaTeX di chuyển \ input đến một vị trí bên trong và thay đổi nó. Một phiên bản đơn giản:

\let\@@input\input 
\def\input#1{\@@input#1 } 
+0

Nhưng các ví dụ của bạn có thể được phân tích rõ ràng. '\ def \ demo {\ def \ demo {cde}} \ demo' đánh giá thành' \ def \ demo {\ def \ demo {cde}} \ def \ demo {cde} 'và vì không có đánh giá nào sau này bước, chúng ta có thể xóa tất cả các câu lệnh '\ def' và do đó giảm nó xuống ∅. - '\ def \ demo {\ def \ demo {c {\ it de}}} \ demo \ demo' tuy nhiên cuối cùng sẽ đánh giá' c {\ it de} '. – Debilski

+0

Trong trường hợp này có, nhưng trong thực tế, chúng tôi có thể có một số định nghĩa cho \ demo và nó được sử dụng ở nhiều nơi. Điểm tôi nhận được là mỗi macro không có văn bản thay thế cố định và do đó bạn không thể thay thế mọi thứ bằng mã của chúng. Tất nhiên TeX tự thay thế mọi thứ nếu chúng là các macro, nhưng không phải trong "một lần": mỗi mã thông báo được kiểm tra khi cần. –

4
+0

Liên kết bị hỏng. – holdenlee

+0

@holdenlee, hãy thử https://web.archive.org/web/20100310064605/http://www.astro.indiana.edu/~jthorn/software.html. – lhf

4

TeX có rất nhiều sự khác biệt trong việc dò tìm các công cụ được tích hợp sẵn, bao gồm việc mở rộng macro theo dõi. Điều này chỉ theo dõi các macro trực tiếp khi chúng thực sự được mở rộng, nhưng nó vẫn khá hữu ích. Chi tiết đầy đủ trong TeXbook và có thể ở nơi khác.

Khi tôi đang cố gắng để gỡ lỗi một vấn đề vĩ mô tôi thì thường hay dùng búa lớn:

\tracingall\tracingonline 

sau đó tôi đào trong đầu ra hoặc các tập tin log cho những gì tôi muốn biết.

+0

Theo [câu trả lời này] (http://tex.stackexchange.com/a/60494/15665), '\ tracingonline' yêu cầu tham số. (Nhưng '\ tracingall' nên đã bao gồm mọi thứ, phải không?) –

0

Có rất nhiều thảo luận về sự cố này trên this question tại tex.SE và this question. Nhưng tôi sẽ tận dụng cơ hội để lưu ý rằng câu trả lời hay nhất (IMO) là sử dụng chương trình de-macro, là một tập lệnh python đi kèm với TeXLive. Nó khá có khả năng, và có thể xử lý các đối số cũng như các thay thế đơn giản.

Để sử dụng, bạn di chuyển các macro mà bạn muốn mở rộng thành tệp <something>-private.sty và đưa nó vào tài liệu của bạn với \usepackage{<something>-private}, sau đó chạy de-macro <mydocument>. Nó phun ra <mydocument>-private.tex, giống như bản gốc của bạn, nhưng với các macro riêng của bạn được thay thế bằng những thứ cơ bản hơn của chúng.