حجم الصورة إلى أسفل، ولكن ليس في اللاتكس

StackOverflow https://stackoverflow.com/questions/122348

  •  02-07-2019
  •  | 
  •  

سؤال

لدي أمر يتضمن أمر includegraphics - يمكنني تمرير صورة إلى الأمر الخاص بي، وسوف يقوم ببعض التنسيق القياسي لي قبل تضمين الصورة فعليًا.بعض الصور التي أقوم بتضمينها عبر هذا الأمر أصغر من extwidth، بينما بعضها أكبر.أرغب في تصغير حجم الصور الكبيرة إلى extwidth، مع عدم تكبير الصور الأصغر حجمًا - وهذا يعني أنني لا أستطيع فعل ذلك

\includegraphics[width=\textwidth]{img}

هل هناك طريقة لتحديد الحد الأقصى؟أو هل يمكنني الحصول على عرض الصورة بطريقة ما حتى أتمكن من القيام بشيء مثل

\ifthenelse{\imagewidth > \textwidth}{%
    \includegraphics[width=\textwidth]{img}}{%
    \includegraphics{img}}
هل كانت مفيدة؟

المحلول

للحصول على عرض الصورة يمكنك استخدام هذا الكود:

\newlength{\imgwidth}
\settowidth{\imgwidth}{\includegraphics{img}}

يمكنك استخدام هذا في مقدمة المستند لإنشاء أمر جديد لضبط العرض تلقائيًا:

\usepackage{graphicx}
\usepackage{calc}

\newlength{\imgwidth}

\newcommand\scalegraphics[1]{%   
    \settowidth{\imgwidth}{\includegraphics{#1}}%
    \setlength{\imgwidth}{\minof{\imgwidth}{\textwidth}}%
    \includegraphics[width=\imgwidth]{#1}%
}

ثم في المستند الخاص بك:

\scalegraphics{img}

آمل أن يساعد هذا!

نصائح أخرى

تعجبني معلمة إضافية لتصغير حجم الصورة أو تكبيرها قليلاً، لذا فإن إصدار \scalegraphics الخاص بي يبدو كما يلي:

\newcommand\scalegraphics[2][]{%
    \settowidth{\imgwidth}{\includegraphics{#2}}%
    \setlength{\imgwidth}{\minof{#1\imgwidth}{\textwidth}}%
    \includegraphics[width=\imgwidth]{#2}%
}

ال adjustbox الحزمة مفيدة لهذا الغرض.ستجد أدناه مثالا قصيرا.فهو يسمح بما يلي (إلى جانب التشذيب والقص وإضافة الهوامش والقياس النسبي:

\documentclass[a4paper]{article}


\usepackage[demo]{graphicx}
\usepackage[export]{adjustbox}

\begin{document}

\adjustbox{max width=\linewidth}{\includegraphics[width=.5\linewidth,height=3cm]{}}

\adjustbox{max width=\linewidth}{\includegraphics[width=2\linewidth,height=3cm]{}}

\includegraphics[width=2\linewidth,height=3cm,max width=\linewidth]{}
\end{document}

إذا كنت تستخدم export خيار الحزمة يمكن استخدام معظم مفاتيحه مباشرة \includegraphics.على سبيل المثال المفتاح المناسب لك، max width.

إذا كان ما تريد تقييده ليس صورة بل قائمة بذاتها .tex الملف، يمكنك تعديل طفيف لChrisN \scalegraphics ل

\newlength{\inputwidth}
\newcommand\maxwidthinput[2][\linewidth]{%   
    \settowidth{\inputwidth}{#2}%
    \setlength{\inputwidth}{\minof{\inputwidth}{#1}}%
    \resizebox{\inputwidth}{!}{#2}
}

ومن ثم استخدامه مثل ذلك

\maxwidthinput{\input{standalone}}
\maxwidthinput[0.5\textwidth]{\input{standalone}}

وبالطبع، adjustbox كما اقترح تيد ستعمل أيضًا:

\usepackage{adjustbox}
...
\adjustbox{max width=\linewidth}{\input{standalone}}

بعد بضع دقائق من البحث في أدلة CTAN ونتائج Google، أعتقد أنني أستطيع أن أقول بأمان أن ما تريد القيام به إما مستحيل أو صعب للغاية.توصيتي الوحيدة هي أن يكون لديك أمرين، أحدهما للصور الصغيرة والآخر للصور الكبيرة، أو أمر واحد مع خيار.

قد تكون هناك طريقة، لكنني أتركها لـ S.O الآخرين.معالجات LaTeX لتقديم إجابة أفضل.

يحرر:أنا مخطئ، انظر أعلاه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top