
Рассмотрим код:
\documentclass[a5paper,12pt,onecolumn,openany,final]{book}
\usepackage[hmargin=0.7in,vmargin=0.75in]{geometry}
\usepackage{pstricks}
\usepackage{graphicx}
\begin{document}
\thispagestyle{empty}
\begin{pspicture}(-5,-5)(5,12)%
\psframe[linecolor=black,linewidth=4pt](-5,-5)(5,12)%
\rput(0,3.5){\includegraphics[width=.86\linewidth,height=1.49\linewidth]{example-image-a}}
\end{pspicture}
\end{document}
который производит
Результат — это то, что мне нужно; однако метод, который я использовал для его получения, былметодом проб и ошибок. Точнее, я центрировал изображение в pspicture
точке (0,3.5)
, а затем пробовал разные значения, пока не пришел к значению width=.86\linewidth
, height=1.49\linewidth
которое, кажется, дает то, что мне нужно.
ВОПРОС: Есть ли более целесообразный подход, который я могу использовать, не требующий проб и ошибок, чтобы автоматически идеально вписать изображение в pspicture
тот, который я обрисовал?
Я компилирую код с помощью xelatex
.
Спасибо.
решение1
Я использовал lualatex
. Поместите начало координат в левый нижний угол!
\RequirePackage{pdfmanagement-testphase}% For opacity and lualatex
\DocumentMetadata{} % For opacity and lualatex
\documentclass[a5paper,12pt,onecolumn,openany,final]{book}
\usepackage[hmargin=0.7in,vmargin=0.75in]{geometry}
\usepackage{pstricks}
\usepackage{graphicx}
\begin{document}
\thispagestyle{empty}
\begin{pspicture}(-5,-5)(5,12)%
\psframe[linecolor=black,linewidth=4pt,dimen=inner](-5,-5)(5,12)%
\rput[lb](-5,-5){\includegraphics[width=10cm,height=17cm]{example-image-a}}
\psframe*[opacity=0.2,linecolor=red](-5,-5)(5,12)
\end{pspicture}
\end{document}
решение2
Просто вычислить значения с помощью TeX?
%! TEX program = lualatex
\documentclass[a5paper,12pt,onecolumn,openany,final]{book}
\usepackage[hmargin=0.7in,vmargin=0.75in]{geometry}
\usepackage{pstricks}
\usepackage{graphicx}
\begin{document}
\thispagestyle{empty}
\begin{pspicture}(-5,-5)(5,12)%
\psframe[linecolor=black,linewidth=4pt](-5,-5)(5,12)%
\rput(0,3.5){\includegraphics[width=\dimexpr10cm-8pt\relax,height=\dimexpr17cm-8pt\relax]{example-image-a}}
\end{pspicture}
\end{document}
Где 10cm
и 17cm
вычисляется путем вычитания соответствующих координат, а 8pt
— удвоенное linewidth
значение. (Вы также можете написать 4pt*2
)