使用 itemize 时显示符号的问题

使用 itemize 时显示符号的问题

我目前正在编写一本烹饪书,想用 展示食谱中的一些事实cookingsymbols.sty。我无法在没有项目符号的情况下显示项目符号列表中的符号。我已经尝试了几种不同的编写方法,但总是出错。有人能给我指明正确的方向吗?

\begin{infos}{}
\item[] \cookingtime{2 hours}  \\
\item[] \servings{2 persons}   \\
\item[] \oventime{180 degrees}
\end{infos}

我正在使用自己的recipe.sty代码,代码如下:

\newcommand{\cookingtime}[1]{\Interval & \hspace{-0.3cm} #1}
\newcommand{\servings}[1]{{\Large \Dish} & \hspace{-0.3cm} #1}
\newcommand{\oventime}[1]{{\Large \Oven} & \hspace{-0.3cm} #1}
\newcommand{\stovetime}[1]{{\Large \Gloves} & \hspace{-0.3cm} #1}

\newenvironment{infos}{
{\large {\bf Hard Facts}} \\
\par\smallskip
\begin{itemize}
\setlength{\itemsep}{-0.3cm}
}{
\end{itemize}
}

我收到的错误如下:

Misplaced alignment tab character &. [\item[] \cookingtime{2 hours}]

这是一个最小的例子

\documentclass{article}
\usepackage{cookingsymbols}

\newcommand{\cookingtime}[1]{\Interval & \hspace{-0.3cm} #1}
\newcommand{\servings}[1]{{\Large \Dish} & \hspace{-0.3cm} #1}
\newcommand{\oventime}[1]{{\Large \Oven} & \hspace{-0.3cm} #1}
\newcommand{\stovetime}[1]{{\Large \Gloves} & \hspace{-0.3cm} #1}

\newenvironment{infos}{
    {\large {\bf Hard Facts}} \\
    \par\smallskip
    \begin{itemize}
    \setlength{\itemsep}{-0.3cm}
}{
    \end{itemize}
}

\begin{document}

\begin{infos}{}
\item[] \cookingtime{2 hours}  \\
\item[] \servings{2 persons}   \\
\item[] \oventime{180 degrees}
\end{infos}

\end{document}

答案1

如果要对齐线条,可以使用 atabular而不是itemize。因为\Interval没有找到,我为此定义了一个虚拟命令。

如果您想调整列之间的间距,可以使用@{\hskip 5pt}

\documentclass{article}
\usepackage{cookingsymbols}

\newcommand{\Interval}{Int}

\newcommand{\cookingtime}[1]{\Interval & #1}
\newcommand{\servings}[1]{{\Large \Dish} & #1}
\newcommand{\oventime}[1]{{\Large \Oven} & #1}
\newcommand{\stovetime}[1]{{\Large \Gloves} & #1}

\newenvironment{infos}{
    {\large {\bf Hard Facts}} \\
    \par\smallskip
    \begin{tabular}{r@{\hskip 5pt}l}
}{
    \end{tabular}
}

\begin{document}

\begin{infos}{}
\cookingtime{2 hours}  \\
\servings{2 persons}   \\
\oventime{180 degrees}
\end{infos}

\end{document}

在此处输入图片描述

答案2

这是一个替代解决方案,它使用enumitem包来定义infos一个新的itemize类似列表:

  • 使用\newlist,您只需定义一个新环境(此处:)并从现有列表环境(此处:)复制预定义数量的嵌套级别(此处只需要一个级别)的\begin{infos}...\end{infos}所有设置。itemize
  • 使用\setlist,您可以更改列表的属性。请参阅enumitem手动的了解可用设置的完整列表。在这里,我添加了标题和键before,并设置了一些长度(所有长度均可自定义)。
  • 然后,您可以在环境\item[...]中使用infos并将相应的符号放在可选参数中。为了方便起见,我将一些宏(如原始示例中所示)定义为简写。
  • 注意:为了让符号和文本在垂直方向上更好地对齐,我决定将\raisebox符号的位置稍微降低一点。当然,这是可以自定义的。
\documentclass{article}
\usepackage{cookingsymbols}
\usepackage{enumitem}

\newlist{infos}{itemize}{1}
\setlist[infos]{%
    before={\noindent\textbf{\large Hard Facts}\\[-1.2\baselineskip]},
    itemsep=-2pt,
    itemindent=-5pt,
}

\newcommand{\servings}{\item[\raisebox{-2pt}{\Large\Dish}]}
\newcommand{\oventime}{\item[\raisebox{-2pt}{\Large\Oven}]}
\newcommand{\stovetime}{\item[\raisebox{-2pt}{\Large\Gloves}]}

\begin{document}

\begin{infos}
    \servings 2 persons
    \oventime 180 degrees
    \stovetime 2 hours
\end{infos}

\end{document}

在此处输入图片描述

相关内容