2009-03-07 24 views
15

Trong số LaTeX, người ta có thể sử dụng \textwidth\columnwidth để chỉ định kích thước của đồ họa liên quan đến kích thước của văn bản xung quanh, ví dụ: \includegraphics[width=.5\textwidth]{myimage}.Toán tử trong việc xác định chiều rộng hình trong LaTeX

Tôi muốn dễ dàng chuyển đổi từ các cột tròn sang mẫu dạng cột (và ngược lại) mà không có hình quá lớn đối với mẫu trên mẫu. Đối với mẫu có hai cột (trong đó \columnwidth là khoảng một nửa số \textwidth), tôi muốn có một cái gì đó như: \includegraphics[width=.9\columnwidth]{myimage}. và mẫu cho mẫu trước (nơi \columnwidth\textwidth bằng nhau):
\includegraphics[width=.5\textwidth]{myimage}.

Bây giờ, tôi đã xác định rằng tôi có thể giới hạn điều này bằng cách sử dụng một loại toán tử tối thiểu: \includegraphics[width=min(.5\textwidth,.9\columnwidth)]{myimage} nhưng đây là cú pháp không hợp lệ. Có một cái gì đó như thế này để giải quyết vấn đề này, có thể thông qua việc sử dụng hệ thống macro LaTeX?

Trả lời

17

Mặc dù có thể viết loại macro này, tôi không muốn mã hóa nó thành từng hình; làm thế nào về một cái gì đó như thế này

\makeatletter 
\newlength \figwidth 
\[email protected] 
    \setlength \figwidth {0.9\columnwidth} 
\else 
    \setlength \figwidth {0.5\textwidth} 
\fi 
\makeatother 

và sau đó sử dụng

\includegraphics[width=\figwidth]{myimage} 

để chèn đồ họa.

+1

Nên là \ if @ twocolumn, nhưng ngược lại là câu trả lời hay. – ChrisN

+0

Ha, tuyệt vời! Điều này có vẻ đẹp hơn một số câu trả lời kỳ lạ tôi đã tìm thấy trực tuyến. Cảm ơn nhiều! – mbudisic

+0

Bây giờ tôi đã thử nghiệm nó và nó đã làm việc với hai thay đổi: đầu tiên, đã được đề cập '@ twocolumn'. Thứ hai, '\ linewidth' cần được thay đổi thành' \ textwidth', nếu không hình ảnh chỉ được hiển thị trong chế độ twocolumn. Để hoàn thành, tôi đang sử dụng mẫu IEEEtran, được sử dụng bởi các tạp chí IEEE một confs. Cảm ơn! – mbudisic

0

Ai đó quen thuộc hơn với điều này có thể sẽ trả lời, nhưng lưu ý rằng bạn cũng sẽ cần phải thay đổi loại hình của bạn thành hình * nếu bạn đang đi hai cột.

+0

tôi không làm điều này mà không nhìn thấy bất kỳ tác dụng phụ. bạn có thể làm rõ tại sao người ta sẽ làm gì này? – mbudisic

+0

OK, tôi đã đọc http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions#Wide_figures_in_two_column_documents để xem ý bạn là gì.Lưu ý rằng tôi muốn các số liệu của mình vừa với một cột đơn trong chế độ hai cột và kéo dài trong chế độ onecolumn, nhưng không quá nhiều đến mức chúng chiếm toàn bộ chiều rộng của trang. – mbudisic

4

\textwidth là chiều rộng ngang của nội dung trang và không thực sự phù hợp với mục đích của bạn.

\linewidth là chiều rộng của đường hiện tại; nó sẽ được cập nhật phù hợp với cột, thụt đầu dòng vv

Đoạn sau đây tạo ra một hình ảnh mà chính xác phải phù hợp với chiều rộng toàn bộ dòng (tức là không có cảnh báo overful):

\noindent\includegraphics[width=\linewidth]{myimage} 

Nếu bạn thích lề nhỏ trên bên trái và bên phải, bạn có thể sử dụng:

\begin{center} 
\includegraphics[width=.9\linewidth]{myimage} 
\end{center} 

Hoặc, nếu bạn muốn xác định lợi nhuận trong một kích thước tuyệt đối:

\usepackage{calc} 
... 
\begin{center} 
\includegraphics[width=\linewidth-20pt]{myimage} 
\end{center} 
+0

\ linewidth là hoàn hảo! – goweon

1

Hmm ... mã ở trên (\ if @ twocolumn vv) không hoạt động đối với tôi chút nào. Không biết tại sao không. :(tetex trên osX sử dụng fink.Hãy cố gắng sử dụng revtex4, vì vậy có lẽ đó là vấn đề.Tôi thực sự thích ý tưởng của loại thay đổi này bởi vì tôi sẽ được dorking với chiều rộng vv cho luận án của tôi và các bài báo tạp chí, và để có những khoảng cách quy định với một macro có thể hữu ích cho các loại chuyển đổi.

Bất kỳ ý kiến ​​đánh giá rất cao! -Allen

+1

Bạn đang gặp phải lỗi gì? Bạn có đang bảo vệ mã này bằng '\ makeatletter' không? –

+0

Yup, thêm nó như trên, và sử dụng nó như là một ví dụ - không có tình yêu. Tôi nghĩ rằng nó có thể revtex4 chơi với tôi. Tôi sẽ phải thử một lớp bài viết ví dụ tôi nên thêm không có lỗi đã được ném - nó chỉ bỏ qua lệnh hoàn toàn. Tôi sẽ thử lại sớm và đăng lại. Cảm ơn bạn đã hỏi thăm! – AllenH

+0

Ok, không quan tâm đến điều này một lần nữa. Sử dụng revtex4, tetex và pdftex - và không thể làm việc này. Tôi nhận được chuỗi điều khiển không xác định. lỗi. Tôi đã thử một số tùy chọn khác nhau về kích thước được sử dụng (ví dụ: textwidth, columnwidth, linewidth và nhiều cách khác nhau để tạo toán tử \ setlength (với niềng răng, không có niềng răng, v.v.). nó chỉ hoạt động với lớp bài viết? – AllenH

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