2010-06-22 23 views
5

Xin chào những người đam mê LaTeX và những người lập trình TeX!LaTeX: Chỉ hiển thị khối nếu có đủ không gian còn lại

Tôi hiện đang phát triển một lớp tài liệu một trang cho một số loại tờ rơi sẽ được tạo tự động. Thật không may, số lượng không gian giới hạn không làm cho nó có thể hiển thị mọi thứ trên trang, vì vậy tôi cần bỏ qua một số bài báo hoàn toàn (tôi không muốn chỉ một nửa của một bài viết được in trên tờ rơi).

Trong mã giả, đó là lệnh Tôi đang tìm kiếm:

\if_sufficient_vspace_left 
    {<big block/minipage with an article>} 
    {<otherwise do nothing or something else>} 

Và các trường hợp sử dụng là:

  • Nếu có đủ không gian thẳng đứng cho các bài viết sau đây trái trên trang, in toàn bộ bài báo. Nếu không, chỉ thêm dòng tiêu đề vào danh sách «Các bài viết khác».
  • Nếu có đủ không gian theo chiều dọc, hãy thêm quảng cáo lớn, nếu không thêm quảng cáo nhỏ hơn hoặc không làm gì cả.

Tôi khá chắc chắn rằng sẽ có cách để có được điều này. Ví dụ, lệnh TeX \leaders, hoạt động ở chế độ dọc và ngang, chỉ chèn người đứng đầu nếu còn đủ dung lượng. Thật không may tôi không muốn lặp lại bất cứ điều gì, và một hành động khác có thể là tuyệt vời quá.

Bất kỳ từ khóa và mẹo nào cho các lệnh hữu ích đều sẽ được đánh giá cao. Bạn không phải đăng các giải pháp hoàn chỉnh (nhưng tất nhiên bạn có thể).

Rất cám ơn,
Christoph

Trả lời

1

Gói 'needspace' có thể cung cấp cho bạn những gì bạn đang tìm kiếm, mặc dù nếu không có đủ không gian nó chèn một pagebreak:

http://ctan.org/pkg/needspace

Bạn sẽ sử dụng nó như sau:

\needspace{5\BaseLineSkip} % assume you need 5 lines for minipage 
    {<big block/minipage with an article>} 

Nếu bạn không cảm thấy ta ngắt trang khi không có đủ không gian, thay vì muốn nội dung hơn nhưng với sự minipage lưu cho đến khi trang tiếp theo, sau đó bạn sẽ cần phải điều tra như thế nào xử lý LaTeX "nổi":

http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions

+0

Tôi không nghĩ rằng gói 'needspace' sẽ được sử dụng cho tôi, bởi vì tôi không muốn tạo trang thứ hai trong mọi trường hợp. Dù sao, hai macro '\ pagetotal' và' \ pagegoal' được sử dụng bởi gói 'needspace' trông đầy hứa hẹn. Tôi nghĩ tôi sẽ xem xét chúng trước. Cảm ơn vì tiền hỗ trợ. – tux21b

+0

@ tux21b: Xin lỗi, tôi không đọc đủ câu hỏi của bạn. Bạn có thể đã làm điều đó rồi, nhưng sử dụng các điều kiện của Tex hoặc gói 'ifthen' trong LaTeX (cũng có thể nếu/then/else) có thể giúp cấu trúc cơ sở thực hiện những gì bạn muốn. OH, C ALNG, nơi tốt nhất để yêu cầu giúp đỡ có lẽ là trong một diễn đàn tại http://www.latex-community.org. –

+0

Hehe, bạn nói đúng. Bây giờ tôi đã giải quyết được vấn đề với gói ifthen và hai macro '\ pagetotal' và '\ pagegoal'. Vì vậy, cảm ơn bạn đã giúp đỡ của bạn và liên kết. – tux21b

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