如何让图形触及页面边缘?

如何让图形触及页面边缘?

我如何定位一个图形(图片)以便它:

  • 与文本左侧对齐(这是双列页面)
  • 触及(或超出)页面的右侧?

您可以在此处找到一个例子:http://library.fes.de/pdf-files/akademie/berlin/04801.pdf(转到任何有图片的页面,看看图片是如何放置的。)注意:这个例子并不漂亮;我认为设计很糟糕。尽管如此,我还是想知道如何实现这种图片样式设计。

答案1

\documentclass[a4paper,twocolumn]{article}
\usepackage{lipsum,graphicx}
\newcommand{\mydimright}{%
  \dimexpr\paperwidth-1in-\hoffset-\oddsidemargin-
  \columnwidth-\columnsep\relax}
\newcommand{\mydimleft}{%
  \dimexpr1in+\hoffset+\oddsidemargin+\columnwidth\relax}

\begin{document}
\lipsum[1]
\begin{flushleft}
\makebox[\columnwidth][r]{%
\includegraphics[height=1cm,width=\mydimleft]{try}}
\end{flushleft}
\lipsum[1-5]
\begin{flushleft}
\makebox[\columnwidth][l]{%
\includegraphics[height=1cm,width=\mydimright]{try}}
\end{flushleft}
\end{document}

无法立即访问正确的边距宽度,必须以间接方式计算。

使用布局包的命令\layout,可以查看相关长度。我还放了\hoffset,因为有些类可能会改变它。

try是我经常用于测试的图形文件。我使用它flushleft只是为了避免 LaTeX 试图巧妙地放置图形。

--用于图形环境中自动放置的扩展版本--

这是按照马丁的建议;该命令的\touchmarginincludegraphics工作方式与其兄弟命令类似\includegraphics,当然,除了width不应指定关键字。

\documentclass[a4paper,twocolumn]{article}
\usepackage{lipsum,graphicx}

\makeatletter
\def\tmig@r{\dimexpr\paperwidth-1in-\hoffset-
  \oddsidemargin-\columnwidth-\columnsep\relax}
\def\tmig@l{\dimexpr1in+\hoffset+\oddsidemargin+\columnwidth\relax}
\newcommand{\touchmarginincludegraphics}[2][]{%
  \begingroup
  \if@firstcolumn
    \def\tmig@place{r}%
  \else
    \def\tmig@place{l}%
  \fi
  \makebox[\columnwidth][\tmig@place]{%
    \includegraphics[#1,width=\@nameuse{tmig@\tmig@place}]{#2}}
  \endgroup}
\makeatother

\begin{document}
\lipsum[1]

\begin{figure}[!h]
\touchmarginincludegraphics[height=1cm]{try}
\end{figure}

\lipsum[1-4]

\begin{figure}[!h]
\touchmarginincludegraphics[height=1cm]{try}
\end{figure}

\lipsum[2]
\end{document}

相关内容