我如何定位一个图形(图片)以便它:
- 与文本左侧对齐(这是双列页面)
- 触及(或超出)页面的右侧?
您可以在此处找到一个例子: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}