تالار گفتگوی پارسیلاتک
لاتک LATEX => گرافیک، جدول و شکل => نويسنده: فرشاد ترابی در سپتامبر 28, 2014, 02:23:34 pm
-
با سلام
فرض کنید در یک متن تعدادی عکس قرار است قرار داده شود. عکسهایی که وجود دارند سه دسته میشوند
۱. عکسهایی با ابعاد تقریبا مربع. مثلا نسبت طول به عرض آنها کمتر از ۱.۵ است.
۲. عکسهایی به صورت مستطیل عمودی که نسبت ارتفاع آن به پهنای آن بیش از ۲ است.
۳. عکسهایی به صورت مستطیل افقی که نسبت ارتفاع آن به پهنای آن کمتر از 0.5 است.
حال با توجه به نوع عکس، میخواهم ابعاد آنرا به صورتهای متفاوت تنظیم کنم. مثلا برای عکسهای توع ۱، پهنای ۳ سانت، عکسهای ۲ پهنای ۱ سانت و
عکسهای نوع ۳ ارتفاع ۱ سانت.
آیا میتوان این کار را انجام داد؟
-
از اونجایی که گفتید «مثلاً» من تست کامل ابعاد را نوشتهام وگرنه با مثال شما تست ابعاد خیلی سادهتر است:
\documentclass{article}
\usepackage{graphicx}
\newsavebox\MyGraphicBox
\newcommand*{\IncludeGraphics}[1]{%
\sbox{\MyGraphicBox}{\includegraphics{#1}}
\edef\MyGraphicRatio{\dimexpr\number\numexpr\number\dimexpr\ht\MyGraphicBox\relax*65536/\number\dimexpr\wd\MyGraphicBox\relax\relax sp\relax}
\typeout{\the\ht\MyGraphicBox /\the\wd\MyGraphicBox =\the\MyGraphicRatio}
\ifdim\MyGraphicRatio<0.5pt
\includegraphics[width=1cm]{#1}
\else
\ifdim\MyGraphicRatio<1.5pt
\includegraphics[width=3cm]{#1}
\else
\ifdim\MyGraphicRatio>2pt
\includegraphics[width=1cm]{#1}
\fi
\fi
\fi
}
\begin{document}
\IncludeGraphics{test.jpg}
\end{document}
الگوریتم :
تنها کاری که شما لازم است انجام بدهید اینکه که ارتفاع عکس را تقسیم بر عرض عکس کنید تا یک نسبت بگیرید و با توجه به مقدار این نسبت عکس پهنای متفاوتی داشته باشد.
-
البته توی سوال شما و همچنین کد من تکلیف نسبتی که بین ۱٫۵ و ۲ باشه روشن نیست و هیچ کاری در این صورت انجام نمیشه.
-
من الان هرچی تست میکنم مقدار \MyGraphicRatio را برابر با صفر برمیگردونه و برای همه یک کار انجام میده. یعنی الان خروجی typeout که شما قرار دادید به صورت زیر است
80.29979pt/223.8357pt=0.0pt
-
من الان هرچی تست میکنم مقدار \MyGraphicRatio را برابر با صفر برمیگردونه و برای همه یک کار انجام میده. یعنی الان خروجی typeout که شما قرار دادید به صورت زیر است
80.29979pt/223.8357pt=0.0pt
من یک دقیقه بعد از نوشتن کد، آن را تغییر دادم و این مشکل را درست کردم. آیا از نسخه ویرایش شده کد استفاده کردهاید؟
-
نه من از کد قدیمی استفاده کرده بودم. الان که عوضش کردم درست شد. ممنون.
شرطها را برای کار خودم درست کردم به گونهای که برای تمامی کارها جواب بدهد. هدف به دست آوردن GraphicRatio بود که به لطف شما محقق شد. ممنون.
-
با سلام
فرض کنید در یک متن تعدادی عکس قرار است قرار داده شود. عکسهایی که وجود دارند سه دسته میشوند
۱. عکسهایی با ابعاد تقریبا مربع. مثلا نسبت طول به عرض آنها کمتر از ۱.۵ است.
۲. عکسهایی به صورت مستطیل عمودی که نسبت ارتفاع آن به پهنای آن بیش از ۲ است.
۳. عکسهایی به صورت مستطیل افقی که نسبت ارتفاع آن به پهنای آن کمتر از 0.5 است.
حال با توجه به نوع عکس، میخواهم ابعاد آنرا به صورتهای متفاوت تنظیم کنم. مثلا برای عکسهای توع ۱، پهنای ۳ سانت، عکسهای ۲ پهنای ۱ سانت و
عکسهای نوع ۳ ارتفاع ۱ سانت.
آیا میتوان این کار را انجام داد؟
کاربرد این قضیه چیه؟ میشه توضیح بدید؟
-
من دارم یک مجموعه خلاصه مقاله برای کنفرانس آماده می کنم که در آن نویسندگان مختصری در مورد مقاله خود توضیح میدهند و برای کار خود یک عکس هم
ضمیمه می کنند. اما این عکس میتونه سه حالت داشته باشه که با توجه به شکل عکس که در بالا توضیح دادم، چیدمان کادر متفاوت میشه. نمونهای از کار
در شکل پیوست شده است.
-
من دارم یک مجموعه خلاصه مقاله برای کنفرانس آماده می کنم که در آن نویسندگان مختصری در مورد مقاله خود توضیح میدهند و برای کار خود یک عکس هم
ضمیمه می کنند. اما این عکس میتونه سه حالت داشته باشه که با توجه به شکل عکس که در بالا توضیح دادم، چیدمان کادر متفاوت میشه. نمونهای از کار
در شکل پیوست شده است.
۱. الان اون دو تا شکل پایین رو به خاطر صرفهجویی در فضای صفحه در کنار متن قرار دادین؟
۲. این کار رو دستی انجام دادید یا از این راهحل آقا وفا و به طور خودکار استفاده کردید؟
-
1. چون عکسش عمودی هست در کنار متن قرار دادم تا فضای خالی زیاد نشه. اگر پایین صفحه میگذاشتم، به علت ارتفاع زیاد عکس یا باید اونقدر عکس کوچک میشد
که هیچی دیده نمیشد، یا اینکه فضای بسیار زیادی پایین متن قرار میگرفت.
2. در حال حاضر با توجه به راهنمای دکتر کارنپهلو این کار به صورت اتوماتیک انجام میشه و هیچ کاری دستی صورت نمیگیره.
درضمن، از picinpar و wrapfig هم استفاده کردم که به علت قرار گرفتن در محیطهای minipage و parbox و این حرفها، همه چیز بهم میخورد. بنابراین ترجیح دادم
اینطوری حروفچینی بشه.