我目前正在编写一本烹饪书,想用 展示食谱中的一些事实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}