将点与文本垂直对齐

将点与文本垂直对齐

我有以下代码:

 \begin{itemize}
   \item SPOJ - everyone loves SPOJ\\
              - I love SPOJ
 \end{itemize}

我想要做的是在同一位置显示两个连字符。

我喜欢尽可能简单的东西,例如:

 \begin{itemize}
   \item SPOJ &- everyone loves SPOJ\\
              &- I love SPOJ
 \end{itemize}

这不管用。不过,我们欢迎所有解决方案。

我已经搜索过它,但没有找到任何可以起作用的东西(可能是因为我对 LaTeX 不了解并且无法在我的案例中使用某些解决方案)。

我要补充一点,我知道自己感兴趣的是什么,itemize 里面的 itemize 无法满足我。抱歉要求这么高。

答案1

感谢 egreg 关于\linewidth(not \textwidth) 的提示,如果所需的文本变得更宽,这种方法现在可以处理换行(但是,换行的文本不会相对于连字符缩进)。

然后,我提供了第二种方法,即嵌套 itemize 环境。这看起来并不完全符合您的要求,但您可能会觉得可以接受。

\documentclass{article}
\usepackage{calc}
\begin{document}
 \begin{itemize}
   \item SPOJ \parbox[t]{\linewidth-\widthof{SPOJ }}{%
              - everyone loves SPOJ\\
              - I love SPOJ}
 \end{itemize}

Alternate way:

 \begin{itemize}
 \item SPOJ \begin{itemize}
    \item everyone loves SPOJ
    \item I love SPOJ
    \end{itemize}
 \item What is SPOJ?
 \end{itemize}
\end{document}

在此处输入图片描述

答案2

另一种解决方案是使用文本列tabularxX

  • 可以使用包来计算宽度calc,如下所示egreg 的评论

    \begin{tabularx}{\linewidth-\widthof{TeX.SX }}
    

    该示例使用\settowidth和 e-TeX\dimexpr来提供包的替代方案calc

  • itemize下一级别的符号为粗体\textendash。这比小连字符更显眼。因此\labelitemii使用。ii末尾是列表深度的罗马数字(2)。

\documentclass{article}
\usepackage{tabularx}
\usepackage{array}

\newlength\testlength

\begin{document}
  \begin{itemize}
    \item \TeX.SX
      \settowidth{\testlength}{\TeX.SX }%
      \begin{tabularx}{\dimexpr\linewidth-\testlength\relax}[t]
                      {@{}>{\labelitemii}l@{ }X@{}}
        & everyone loves \TeX.SX\\
        & I love \TeX.SX
      \end{tabularx}%
  \end{itemize}
\end{document}

结果

使用包linegoal可以简化为:

\documentclass{article}
\usepackage{tabularx}
\usepackage{array}
\usepackage{linegoal}

\begin{document}
  \begin{itemize}
    \item \TeX.SX
      \begin{tabularx}{\linegoal}[t]
                      {@{}>{\labelitemii}l@{ }X@{}}
        & everyone loves \TeX.SX\\
        & I love \TeX.SX
      \end{tabularx}%
  \end{itemize}
\end{document}

答案3

下面使用强大的enumitem包以提供一个itemize类似的环境,允许在需要时跨越页面边界:

在此处输入图片描述

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\begin{document}
Some text before
\begin{description}[font={\normalfont\textbullet\ },leftmargin=1cm,style=nextline]
  \item[SPOJ] - everyone loves SPOJ \\
              - I love SPOJ
\end{description}
Some text after
\end{document}

15mm可以使用来自其他帖子的元素来计算宽度,或者使用键值widest,使硬编码左边距变得“更柔和”。

相关内容