我正在尝试beamer
使用 TikZ 创建自定义项目符号,但由于某种原因,它对齐不正确(特别是项目符号略高于文本中心)。我该如何解决这个问题?
最小示例:
\documentclass[]{beamer}
\setbeamertemplate{itemize items}{\tikz\node[] {\tikz\draw[black,fill=gray] (0,0) circle (0.1);};}
\usepackage{tikz}
\begin{document}
\begin{frame}
\frametitle{test}
\begin{itemize}
\item Align this properly
\end{itemize}
\end{frame}
\end{document}
(请注意项目符号相对于文本的垂直位置)
答案1
您可以调整baseline
。我还修改了绘制子弹的代码。
\documentclass[]{beamer}
\setbeamertemplate{itemize items}{\tikz[baseline={(a.south)}]\node[draw,circle,black,fill=gray,inner sep=0pt,minimum size=2mm] (a){};}
\usepackage{tikz}
\begin{document}
\begin{frame}
\frametitle{test}
\begin{itemize}
\item Align this properly
\end{itemize}
\end{frame}
\end{document}
答案2
只需不要嵌套tikzpicture
(一般规则是应该始终避免这种情况)您就可以保持所有的\draw
自由:
\documentclass[]{beamer}
\setbeamertemplate{itemize items}{\tikz\draw[black,fill=gray] (0,0) circle (0.1);}
\usepackage{tikz}
\begin{document}
\begin{frame}
\frametitle{test}
\begin{itemize}
\item Align this properly
\end{itemize}
\end{frame}
\end{document}
放大的图像:
原始代码存在什么问题?
TikZ\node
有一个非零inner sep
和一个非零,outer sep
它们增加了额外的间距;你可以通过使用
\setbeamertemplate{itemize items}{\tikz\node[inner sep=0pt,outer sep=0pt] {\tikz\draw[black,fill=gray] (0,0) circle (0.1);};}
但是,正如我之前提到的,最好的方法就是不要嵌套 s tikzpicture
。