2010-01-21 18 views
27

Trong báo cáo của tôi, tôi viết một số tên lớp hoặc tên biến trong một đoạn văn và tôi muốn các tên này được hiển thị bằng phông chữ đơn cách.Ngăn chặn thẻ texttt LaTeX cho phép nội dung của nó vượt qua lề

Ví dụ:

This is my class name: \texttt{baseAdminConfiguration}. 

Đôi khi từ duy nhất bên trong thẻ \ texttt được hiển thị ở phần cuối của một dòng, từ không đi đến dòng kế tiếp, và không có đột phá trong nó không: phần cuối của từ đi qua lề.

Tôi nên xử lý trường hợp như thế nào?

Chúc mừng.

Trả lời

31

Điều này không liên quan nhiều với \texttt. Từ này chỉ đơn giản là quá dài và LaTeX không biết cách gạch nối từ đó. Bạn có thể nói với nó như thế nào để làm điều này bằng tay, bằng cách tuyên bố quy tắc dấu gạch nối:

\hyphenation{base-Admin-Configuration} 

Lệnh \hyphenation thể mất tùy tiện nhiều từ, cách nhau bằng khoảng trắng.

Ngoài ra, nếu điều này không lừa, bạn có thể giới thiệu nhãn hiệu gợi ý hypenation trong văn bản:

This is a long text that uses the word \texttt{base\-Admin\-Configuration) … 

Chỉ có dấu gạch nối thực tế sẽ được hiển thị - không sử dụng cái gọi là dấu gạch nối tùy ý (\-) sẽ không được hiển thị để bạn có thể tự do rắc văn bản của mình với họ, nếu cần.

[Read more about hyphenation in LaTeX]

Để ngăn chặn LaTeX từ tràn dòng về nguyên tắc, toàn bộ đoạn văn có thể được bọc trong một môi trường sloppypar (nhờ Will cho trỏ này ra trong các ý kiến):

\begin{sloppypar} 
    Some text … 
\end{sloppypar} 

Thao tác này tham số các thuật toán của thuật toán ngắt dòng (cụ thể là \tolerance). Nhược điểm: điều này có thể dẫn đến khoảng cách rất xấu xí. Ngoài ra, \tolerance và các thông số nội bộ khác có thể được điều khiển trực tiếp - Câu hỏi thường gặp về TeX shows how.

+0

Câu hỏi nhanh: Có thể để LaTeX phá vỡ dòng sớm thay vì làm tràn lề không? –

+1

@Anon: tốt, bạn luôn có thể * buộc * ngắt dòng bằng cách sử dụng '\\' hoặc '\ newline'. Hoặc bạn có thể đặt văn bản trong môi trường 'flushleft' - nó sẽ không được hợp lý. Nhưng nói chung, không, không phải là tôi biết. Có lẽ có thể tinh chỉnh các thông số nội bộ của thuật toán ngắt dòng. Tôi không biết. –

+5

Gần nhất bạn có thể nhận được là gói đoạn văn với '\ begin {sloppypar} ... \ end {sloppypar}' để cho phép các ngắt dòng kém hơn. (Hoặc viết '\ sloppy' để kích hoạt nó trên toàn cầu.) –

3

Giải pháp khá đơn giản: sử dụng gói url và thay thế lệnh texttt bằng lệnh đường dẫn.

Tôi phát hiện ra rằng tại đây https://tex.stackexchange.com/questions/299/how-to-get-long-texttt-sections-to-break trong bài đăng của Will Robertson.

Chúc mừng

+0

Điều này không hữu ích, khi chúng ta có các tên lớp phức tạp. Nó chỉ phá vỡ đường dẫn ở dấu tách tệp. Và nó cũng loại bỏ khoảng trắng, ví dụ: trong khai báo tham số của phương thức. – fachexot