创建投影仪演示文稿 我想itemize
在 的第二列中显示一个环境tabular
。我的目标是让第一项与第一列中的内容位于同一基线上。我的 MWE 是(tikz
仅用于显示左侧内容的基线)
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc, intersections}
\begin{document}
\newcommand{\tikzmark}[2]{
\tikz[baseline=(#1.base), remember picture]{
\node(#1)[inner sep=0pt]{#2};
}
}
\begin{frame}[t]{Title}
\begin{tabular}{p{0.08\linewidth}p{0.8\linewidth}}
\tikzmark{left}{left text} &
\vspace*{-1\topskip}\vspace*{-0.50\itemsep}
\begin{itemize}
\item \tikzmark{right}{number 1} \\ (with possibly two lines)
\item number 2
\end{itemize}
\end{tabular}
\tikz[overlay, remember picture]{
\draw[red, line width=0.05pt](left.south west)--(right.south east|-left.south west);
\draw[blue](right.south east)--(right.south east|-left.south east);
}
\end{frame}
\end{document}
我将 itemize 环境向上移动了一点1\topskip+0.5\itemsep
,乍一看似乎是完美的距离。仔细观察会发现,实际上第一个项目打印得比左列的内容略低一些。
我的问题是,我需要在这里移动的正确距离是多少,或者有没有更好的方法?我已经读过这和那,但由于我使用的是 beamer,所以无法使用该enumitem
包,因此这些解决方案对我来说不起作用。Matthew Leingang 给出的最后一个解决方案也不起作用,因为我希望能够在每个项目中放入更多行。
编辑:正如答案中所解释的那样,正确的距离应该是-\baselineskip
。当然,我之前已经测试过这个,但没有成功(见我的评论)。花了很长时间才发现,为什么它在 MWE 中有效,但在我的情况下却不行。最后我明白了:这是9pt
我使用的 documentclass 选项!为什么会这样,我该如何避免这种情况?这是 beamer 错误吗?新 MWE:
\documentclass[9pt]{beamer}
\usepackage{tikz}
\usetikzlibrary{calc, intersections}
\begin{document}
\newcommand{\tikzmark}[2]{
\tikz[baseline=(#1.base), remember picture]{
\node(#1)[inner sep=0pt]{#2};
}
}
\begin{frame}[t]{Title}
\begin{tabular}[t]{p{0.08\linewidth}p{0.8\linewidth}}
\tikzmark{left}{left text b} & \vspace*{-1\baselineskip}%\vspace*{-0.50\itemsep}
\begin{itemize}
\item \tikzmark{right}{b number 1} \\ (with possibly two lines)
\item number 2
\end{itemize}
\end{tabular}
\tikz[overlay, remember picture]{
\draw[red, line width=0.05pt](left.south west)--(right.south east|-left.south west);
\draw[blue](right.south east)--(right.south east|-left.south east);
}
\end{frame}
\end{document}
出现另一个问题,将其嵌套到 itemize 环境中:
\documentclass[9pt]{beamer}
\usepackage{tikz}
\usetikzlibrary{calc, intersections}
\begin{document}
\newcommand{\tikzmark}[2]{
\tikz[baseline=(#1.base), remember picture]{
\node(#1)[inner sep=0pt]{#2};
}
}
\begin{frame}[t]{Title}
\begin{itemize}
\item a
\item b
\begin{tabular}[t]{p{0.08\linewidth}p{0.8\linewidth}}
\tikzmark{left}{left text b} & \vspace*{-1\baselineskip}%\vspace*{-0.50\itemsep}
\begin{itemize}
\item \tikzmark{right}{b number 1} \\ (with possibly two lines)
\item number 2
\end{itemize}
\end{tabular}
\tikz[overlay, remember picture]{
\draw[red, line width=0.05pt](left.south west)--(right.south east|-left.south west);
\draw[blue](right.south east)--(right.south east|-left.south east);
}
\end{itemize}
\end{frame}
\end{document}
这里显然需要以某种方式调整距离。我该怎么做?而且:(很抱歉让这个问题越来越长)还有另一个问题:\renewcommand{\baselinestretch}{1.15}
将所有内容向上移动!
编辑:由于所描述的问题与原始问题有所不同,我接受了答案并提出了有关嵌套和线扩展变化的新问题。
答案1
看来正确的距离是\baselineskip
:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc, intersections}
\begin{document}
\newcommand{\tikzmark}[2]{
\tikz[baseline=(#1.base), remember picture]{
\node(#1)[inner sep=0pt]{#2};
}
}
\begin{frame}[t]{Title}
\begin{tabular}{p{0.08\linewidth}p{0.8\linewidth}}
\tikzmark{left}{left text} &
\vskip-\baselineskip% <---
\begin{itemize}
\item \tikzmark{right}{t number 1} \\ (with possibly two lines)
\item number 2
\end{itemize}
\end{tabular}
\tikz[overlay, remember picture]{
\draw[red, line width=0.05pt](left.south west)--(right.south east|-left.south west);
\draw[blue](right.south east)--(right.south east|-left.south east);
}
\end{frame}
\end{document}
附录:上述解决方案适用于 beamer 字体大小选项12pt
、11pt
(默认大小) 和10 pt
。 使用选项9pt
编译失败,因为我还没有安装字体和 所必需的包(extsize
我不需要它) 。 我假设,您的问题是由这个包引起的。8pt
9pt
正如手册 (第 159 页) 所述,字体8pt
和9pt
太小 (因此它们没有原生的投影仪支持),并且“如果您确实需要在每个框架上容纳更多内容,请使用10pt
选项 (无需 即可工作extsize
)”。
解决方案:看看你是否能坚持下去10pt
。好处:(i)字体大小更美观、更清晰9pt
;(ii)你已经解决了你的问题。
答案2
改用-1\baselineskip
。我添加了一个,t
只是number
为了与左边的进行比较。这是因为itemize
它本身就在新行开始。
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc, intersections}
\begin{document}
\newcommand{\tikzmark}[2]{
\tikz[baseline=(#1.base), remember picture]{
\node(#1)[inner sep=0pt]{#2};
}
}
\begin{frame}[t]{Title}
\begin{tabular}{p{0.08\linewidth}p{0.8\linewidth}}
\tikzmark{left}{left text} &
\vspace*{-1\baselineskip}%\vspace*{-0.50\itemsep}
\begin{itemize}
\item \tikzmark{right}{tnumber 1} \\ (with possibly two lines)
\item number 2
\end{itemize}
\end{tabular}
\tikz[overlay, remember picture]{
\draw[red, line width=0.05pt](left.south west)--(right.south east|-left.south west);
\draw[blue](right.south east)--(right.south east|-left.south east);
}
\end{frame}
\end{document}