(该问题与图表、标题等无关)
gra1
将两个图形并排放置很容易,gra2
这样它们就可以沿着边界框的左右垂直边相互接触,
\includegraphics{gra1}\includegraphics{gra2}
足以实现目标(两个图形将被排列为G1G2
中间没有空格)。
如果想将它们一个接一个地放在一起,使它们沿着水平边互相接触,该怎么办?它们应该像这样排列
G1
G2
它们之间没有空格。有什么方法可以做到这一点,并且像以前一样清晰、简单(不需要任何包)?
我知道,建立新生产线并不是解决方案,原因有二:
- 当两个图形足够小时,由于两个图形分属于不同的线,所以它们之间会出现一个空格;
- 我不希望这对图形与线条有任何关联,因为我只想将其作为一个整体来使用。
我并不是在寻找TikZ
解决方案。
编辑第 2 点的原因是,我将使用这两个图形包作为环境\item
中的可选参数itemize
。因此,我想输入类似
\newcommand{\horzcat}{\includegraphics{gra1}\includegraphics{gra2}}
\newcommand{\vertcat}{<the solution I'm looking for>}
在序言中,这样我就可以得到如下的列表,
\begin{itemize}
\item[\horzcat] ...
\item[\vertcat] ...
...
\end{itemize}
答案1
例如,\vertcat
通过将图像堆叠在\vbox
底部图像底部的基线来实现(参见OP的评论)。
图像是左对齐的,整体宽度是较宽图像的宽度。
\offinterlineskip
删除图像之间的空间,无论是否\baselineskip
会\lineskip
以其他方式使用。
放置图像的解决方案不需要任何进一步的软件包。相反,它是使用纯 TeX 中已有的命令和宏来实现的。
\documentclass{article}
\usepackage{graphicx}
\newcommand*{\gra}[1]{%
\includegraphics[width=10pt]{example-image-#1}%
}
\newcommand*{\horzcat}{\gra{a}\gra{b}}
\newcommand*{\vertcat}{%
\leavevmode
\vbox{% baseline is at the bottom
\offinterlineskip % disable line skip
\hbox{\gra{a}}%
\hbox{\gra{b}}%
}%
}
\begin{document}
\begin{itemize}
\item[\horzcat] side by side
\item[\vertcat] one above the other
\end{itemize}
\end{document}
答案2
这很简单:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\centering
\includegraphics[width=0.5\linewidth]{example-image-a}\\% <-- force next image in new line
\includegraphics[width=0.5\linewidth]{example-image-b}
\end{document}
希望我理解正确:-)
附录: 不幸的是,我没有正确理解问题,同时你收到了两个很好的答案。无论如何,考虑一下大卫·卡莱尔在下面评论,我可以采用我的答案:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\centering
\parbox{0.5\linewidth}{\setlength\lineskip{0pt}
\includegraphics[width=\linewidth]{example-image-a}
\includegraphics[width=\linewidth]{example-image-b}
}
\end{document}
现在图像之间没有垂直空间,也不需要\\
强制图像进入新行:-)
答案3
假设图形的高度不小于 a \baselineskip
,将设置\lineskip
为零就可以解决问题(@DavidCarlisle 也建议这样做):
\documentclass{article}
\usepackage{graphicx}
\begin{document}
Resetting lineskip to zero:
\parbox{1cm}{%
\setlength\lineskip{0pt}
\includegraphics[width=1cm]{example-image-a}\\
\includegraphics[width=1cm]{example-image-b}
}
\bigskip
And with normal lineskip
\parbox{1cm}{%
%\setlength\lineskip{0pt}
\includegraphics[width=1cm]{example-image-a}\\
\includegraphics[width=1cm]{example-image-b}
}
\end{document}
答案4
您可以使用设置为零的tabular
环境\arraystretch
。这也适用于微小元素。以下命令的可选参数\vstack
控制元素是居中、左对齐还是右对齐;元素之间用 分隔\\
。
\newcommand\vstack[2][c]%
{{\renewcommand\arraystretch{0}%
\begin{tabular}[b]{@{}#1@{}}#2\end{tabular}%
}}
\documentclass{article}
\usepackage{graphicx}
\newcommand\vstack[2][c]%
{{\renewcommand\arraystretch{0}%
\begin{tabular}[b]{@{}#1@{}}#2\end{tabular}%
}}
\begin{document}
\vstack[l]%
{\includegraphics[height=3pt]{example-image-a}\\
\includegraphics[height=5pt]{example-image-b}
}
a
\vstack
{\includegraphics[height=3pt]{example-image-a}\\
\includegraphics[height=5pt]{example-image-b}
}
b
\vstack[r]%
{\includegraphics[height=3pt]{example-image-a}\\
\includegraphics[height=5pt]{example-image-b}
}
\end{document}