![将图像置于自定义小页面的中心](https://linux22.com/image/304860/%E5%B0%86%E5%9B%BE%E5%83%8F%E7%BD%AE%E4%BA%8E%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B0%8F%E9%A1%B5%E9%9D%A2%E7%9A%84%E4%B8%AD%E5%BF%83.png)
抱歉我的语言不通,我是法国人!
我必须为个人项目创建一个页面模板:在页面的 72% 处放置一个无边距的框,与顶部对齐,其中包含一个垂直和水平居中的大图像,之后在同一页面中以普通文本重新开始。我尝试编写一个命令:
\newcommand\inspic[1]{
\newpage
\thispagestyle{empty}
\noindent
\begin{adjustwidth}{-1.8cm}{-1.8cm}
\begin{minipage}[t]{\parwidth}
\begin{minipage}[b][0.72\paperheight][b]{\paperwidth}
\begin{center}
\centerline{\includegraphics{#1}}
\end{center}
\end{minipage}
\end{minipage}
\end{adjustwidth}
}
但我无法将图像垂直居中。这里有一张图片来解释这一点:
一个最小的例子:
\documentclass{report}
\usepackage[utf8]{report}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage[french, english]{babel}
\usepackage{geometry}
\usepackage{blindtext}
\usepackage{changepage}
\geometry{
a4paper,
lmargin=1.8cm,
rmargin=1.8cm,
tmargin=2cm,
bmargin=3cm
}
\newcommand\inspic[1]{
\newpage
\thispagestyle{empty}
\noindent
\begin{adjustwidth}{-1.8cm}{-1.8cm}
\begin{minipage}[t]{\parwidth}
\begin{minipage}[b][0.72\paperheight][b]{\paperwidth}
\begin{center}
\centerline{\includegraphics{#1}}
\end{center}
\end{minipage}
\end{minipage}
\end{adjustwidth}
}
\begin{document}
\inspic{mybigpicture}
\section*{title}
some text here
\end{document}
解决方案 :
\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french, english]{babel}
\usepackage{geometry}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{lipsum}
\geometry{
a4paper,
lmargin=1.8cm,
rmargin=1.8cm,
tmargin=2cm,
bmargin=3cm
}
\newcommand\inspic[1]{%
\newpage
\thispagestyle{empty}
\noindent
\makebox[\textwidth]{%
\raisebox{2cm}[\dimexpr\height-2cm]{%
\includegraphics[height=0.72\paperheight,keepaspectratio]{#1}%
}%
}\par
}
\begin{document}
\inspic{fuukeicool}
\section*{title}
\lipsum
\end{document}
答案1
使用一个宽度的框\textwidth
,其中包含凸起 2cm 的图片,但其高度也修剪了 2cm,因此它将被放置在页面的最顶部。
\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french, english]{babel}
\usepackage{geometry}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{lipsum}
\geometry{
a4paper,
lmargin=1.8cm,
rmargin=1.8cm,
tmargin=2cm,
bmargin=3cm
}
\newcommand\inspic[1]{%
\newpage
\thispagestyle{empty}
\noindent
\makebox[\textwidth]{%
\raisebox{2cm}[\dimexpr\height-2cm]{%
\includegraphics[height=0.72\paperheight,width=\paperwidth]{#1}%
}%
}\par
}
\begin{document}
\inspic{example-image-a.pdf}
\section*{title}
\lipsum
\end{document}
如果图片的宽度和高度不如保留框那么高,例如它的高度大于宽度,则没有区别,只是不指定宽度:
\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french, english]{babel}
\usepackage{geometry}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{lipsum}
\geometry{
a4paper,
lmargin=1.8cm,
rmargin=1.8cm,
tmargin=2cm,
bmargin=3cm
}
\newcommand\inspic[1]{%
\newpage
\thispagestyle{empty}
\noindent
\makebox[\textwidth]{%
\raisebox{2cm}[\dimexpr\height-2cm]{%
\includegraphics[height=0.72\paperheight]{#1}%
}%
}\par
}
\begin{document}
\inspic{example-image-9x16}
\section*{title}
\lipsum
\end{document}
答案2
这是一个非常手动的方法。
\documentclass[a4paper]{article}
\usepackage{tikz,lipsum}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
\node[anchor=north west,inner sep=0pt] at (current page.north west)
{\includegraphics[width=\paperwidth,height=0.72\paperheight]{example-image-a}};
\end{tikzpicture}
\null
\vspace{0.57\paperheight} %% manually set this
\noindent
\lipsum[1]
\end{document}
答案3
使用浮动的卑鄙伎俩(小页面用淡红色框起来以控制其大小):
\documentclass[a4paper]{report}
\usepackage{graphicx,lipsum,geometry,xcolor}
\geometry{lmargin=1.8cm,rmargin=1.8cm,tmargin=2cm,bmargin=3cm}
\renewcommand{\textfloatsep}{0pt}
\begin{document}
\begin{figure}[!t]
\color{red!10} %for testing only
\vspace{-2cm}\hfil\makebox[0pt][c]{%
\fbox{%for testing only
\begin{minipage}[t][.72\paperwidth]{.72\paperwidth}
\centering
\vspace{\fill}
\includegraphics[width=.9\linewidth]{example-image-1x1}
\vspace{\fill}
\end{minipage}}}
\end{figure}
\lipsum[2-25]
\end{document}
为了完全填充minipage
或使其尽可能最佳贴合,使用
\includegraphics[width=\linewidth,height=.72\paperwidth,keepaspectratio]{myimage}
(如果你保留,你仍然可以看到一些边距, \fbox{}
因为\fboxsep
默认情况下它不是 0pt)