Có cách nào tôi có thể định nghĩa một biến trong LaTeX không?


349

Trong LaTeX, làm cách nào tôi có thể xác định biến chuỗi có nội dung được sử dụng thay vì biến trong tệp PDF được biên dịch?

Giả sử tôi đang viết một tài liệu công nghệ trên một phần mềm và tôi muốn xác định tên gói trong phần mở đầu hoặc ở đâu đó để nếu tên của nó thay đổi, tôi không phải thay thế nó ở nhiều nơi mà chỉ ở một nơi .


2
Đối với nội dung khổng lồ, đáng để đề cập đến \ savebox ( en.wikibooks.org/wiki/LaTeX/Boxes#savebox ).
Immanuel Weihnachten

Câu trả lời:


370

thêm phần sau vào phần mở đầu của bạn:

\newcommand{\newCommandName}{text to insert}

Sau đó, bạn chỉ có thể sử dụng \newCommandName{}trong văn bản

Để biết thêm thông tin về \newcommand, xem ví dụ wikibooks

Thí dụ:

\documentclass{article}
\newcommand\x{30}
\begin{document}
\x
\end{document}

Đầu ra:

30

31
@DiAlex hãy cẩn thận khi bỏ qua các dấu ngoặc nhọn, vì nó sẽ can thiệp vào khoảng trắng sau khi văn bản được chèn. Xem câu hỏi này .
jtpereyda

Tôi không thể làm điều này hoạt động đúng với các ký tự không phải ascii. Có ý kiến ​​gì không?
lindhe

164

Sử dụng \deflệnh:

\def \variable {Something that's better to use as a variable}

Xin lưu ý rằng \defghi đè các macro có sẵn mà không có bất kỳ cảnh báo nào và do đó có thể gây ra các lỗi tinh vi khác nhau. Để khắc phục điều này, hãy sử dụng các biến được đặt tên như my_varhoặc quay lại \newcommand, \renewcommandthay vào đó là các lệnh.


10
Việc sử dụng \defcó thể có vấn đề vì nó không kiểm tra các macro có sẵn. Xem vòng tròn thứ hai của địa ngục LaTeX - như vậy, tốt hơn là nên sử dụng\newcommand
Ryan Atallah

2
Cảm ơn @RyanAtallah đã thêm ghi chú về điều đó. Mặc dù, không có nghĩa variablelà nó có khả năng thay đổi? :)
plaes 15/03 '

4
@plaes Bạn nói đúng, nhưng điều đó vẫn không có nghĩa là bạn muốn sử dụng \def. Thay vào đó, tôi nghĩ rằng tốt nhất là trước tiên hãy "khởi tạo" tất cả các biến mà bạn muốn sử dụng \newcommand(ngay cả khi chỉ với \@empty), sau đó tạo lệnh của bạn để sửa đổi biến bằng cách sử dụng \renewcommand. Điều này sẽ cho bạn biết nếu biến của bạn đã thoát, bởi vì \newcommandsẽ đưa ra một lỗi (hoặc ít nhất là một cảnh báo).
Nick2253

4
Lưu ý rằng \defhoạt động cho những thứ trong chế độ toán học, trong khi \newCommandNamekhông. (Ví dụ \def\mathExpression{\pi^2 + \sin x}:)
Jollywatt

35

Đối với các biến mô tả khoảng cách, bạn sẽ sử dụng \newlength(và thao tác các giá trị với \setlength, \addlength, \settoheight, \settolength\settodepth).

Tương tự như vậy, bạn có quyền truy cập vào \newcounternhững thứ như số phần và số liệu sẽ tăng lên trong toàn bộ tài liệu. Trước đây tôi đã sử dụng mẫu này để cung cấp các mẫu mã được đánh số riêng biệt cho các số liệu khác ...

Cũng cần lưu ý là \makeboxcho phép bạn lưu trữ một chút tài liệu được bố trí để sử dụng lại sau này (và để sử dụng với \settolength...).


25
Ví dụ sử dụng đơn giản như \newlength{\hcolw}\setlength{\hcolw}{0.47\textwidth}sẽ hữu ích.
trybik


1

Tôi nghĩ rằng bạn có thể muốn sử dụng danh sách mã thông báo cho mục đích này: để thiết lập danh sách mã thông báo \newtoks\packagename để gán tên: \packagename={New Name for the package} để đặt tên vào đầu ra của bạn : \the\packagename.

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.