水平间距命令仅适用于多列列表中的第一个项目

水平间距命令仅适用于多列列表中的第一个项目

我试图通过添加多列环境来缩短我的简历multicol。我使用类moderncv和包multicol在一个特殊的两列部分(在我原本一列的简历的中间)布置项目列表。它工作正常,只是整个东西向左移动得太远了,所以我试图通过在每个项目上添加水平间距来将它们全部向右移动来拼凑一个解决方案。

这是一个给我带来问题的源块示例。

\hspace{1cm} \textit{Special heading}
\begin{multicols}{2}

  \hspace{1cm}
  Foo
  \newline
  \hspace{1cm}
  Bar
  \newline
  \hspace{1cm}
  Bat
  \newline
  \end{multicols}

编译时,标题行缩进一厘米,列表中的第一个项目(“Foo”)也是如此,但是,其他项目均未缩进。

我尝试了列表中的其他几个间距命令这个问题,而且它们都会导致同样的问题。

编辑:根据要求,这是一份完整的可编译文档。它符合pdflatex filename.tex在 osx 上安装的 TeX Live 的要求,并显示了错误。

\documentclass[letterpaper]{moderncv}
\usepackage{textcomp}
\usepackage{multicol}
\moderncvstyle{classic}
\moderncvcolor{green}
\usepackage[utf8]{inputenc}
\usepackage[scale=0.75]{geometry}
\setlength{\hintscolumnwidth}{2cm}
\name{Name}{}
\address{Last update: September 22, 2017} %% total hack to get last rev date instead of
                                %% address in here.
\phone[office]{Number (office)}
\email{email}
\homepage{page}
    \begin{document}
\makecvtitle

\lfoot{\thepage}

\section{Here's a normal section}
\cventry
{09/12-Present}
{The thing}
{The other thing}
{That thing}
{}
{\begin{itemize}%
    \item here's a bit of a thing.
    \item and another.
    \end{itemize}}


\section{Stuff}
\subsection{More Stuff}
\cvitem
{2019}
{Stuff.}
\vspace{1mm}
\cvitem
{2017-9}
{Stuff.}

\subsection{Problematic Section}
\hspace{1cm} \textit{Special Header}
\begin{multicols}{2}

  \hspace{1cm}
  Foo
  \newline
  \hspace{1cm}
  Bar
  \newline
  \hspace{1cm}
  Bat
  \newline
  \hspace{1cm}
  Baz
  \newline
  \hspace{1cm}
  One more for good measure
  \newline
\end{multicols}
\vspace{1mm}
\subsection{Another section that works}
\cvitem
{2016-9}
{Stuff.}
\vspace{1mm}
\cvitem
{2016}
{Thingy.}
\end{document}

以下是有问题的输出:

有问题的输出

如您所见,只有斜体子标题和第一项缩进,而多列列表中的所有项目都应该缩进。

答案1

当前版本 2.0.0 中的Classmoderncv有几个命令可以排版更接近的文本,例如\cvlistdoubleitem\cvdoubleitem\cvcolumn

因为您没有提供关于真实内容的信息(bla在这种情况下没有什么帮助 ;-))我有点猜测。命令\cvlistdoubleitem在您似乎不想要的添加信息前面添加了一个文本项目符号。因此,您可以定义一个新命令,\mycvlistdoubleitem例如:

\newcommand*{\mycvlistdoubleitem}[3][.25em]{%
  \cvitem[#1]{}{\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
  \hfill% fill of \separatorcolumnwidth
  \ifthenelse{\equal{#3}{}}%
    {}%
    {\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} 

和用法

\mycvlistdoubleitem{Item 1}{Item 4}
\mycvlistdoubleitem{Item 2}{Item 5}

完整代码如下

\documentclass[letterpaper]{moderncv}

\moderncvstyle{classic}
\moderncvcolor{green}

\usepackage[utf8]{inputenc}
\usepackage[scale=0.75]{geometry}

\usepackage{textcomp}
\usepackage{multicol}

\newcommand*{\mycvlistdoubleitem}[3][.25em]{% <=========================
  \cvitem[#1]{}{\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
  \hfill% fill of \separatorcolumnwidth
  \ifthenelse{\equal{#3}{}}%
    {}%
    {\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}

\setlength{\hintscolumnwidth}{2cm}
\name{Joe}{Doe}
\address{Last update: September 22, 2017} %% total hack to get last rev date instead of address in here.
\phone[office]{Number (office)}
\email{email}
\homepage{page}


\begin{document}
\makecvtitle

\lfoot{\thepage}

\section{Stuff}
\subsection{More Stuff}
\cvitem{2019}{Stuff.}
\vspace{1mm}
\cvitem{2017-9}{Stuff.}

\subsection{Problematic Section}
\hspace*{1cm} \textit{Special Header}
\begin{multicols}{2}
  \hspace*{1cm}
  Foo
  \newline
  \hspace*{1cm}
  Bar
  \newline
  \hspace*{1cm}
  Bat
  \newline
  \hspace*{1cm}
  Baz
  \newline
  \hspace*{1cm}
  One more for good measure
  \newline
\end{multicols}
\vspace{1mm}

\section{Extra 2}
\mycvlistdoubleitem{Item 1}{Item 4} % <=================================
\mycvlistdoubleitem{Item 2}{Item 5}
\mycvlistdoubleitem{Item 3}{Item 6. Like item 3 in the single column list before, this item is particularly long to wrap over several lines.}

\section{Extra 2}
\cvlistdoubleitem{Item 1}{Item 4}
\cvlistdoubleitem{Item 2}{Item 5}
\cvlistdoubleitem{Item 3}{Item 6. Like item 3 in the single column list before, this item is particularly long to wrap over several lines.}

\section{Computer skills}
\cvdoubleitem{category 1}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
\cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ}
\cvdoubleitem{category 3}{XXX, YYY, ZZZ}{category 6}{XXX, YYY, ZZZ}

\end{document}

您将获得以下结果:

产生的简历

如您所见,使用更正后的命令的解决方案\hspace*{1cm}从保留日期的列开始。在我用红色圆圈标记的第 1 部分中,您可以看到新命令的结果\mycvlistdoubleitem,在下面您可以看到原始命令的结果\cvlistdoubleitem,用红色圆圈标记的第 2 部分显示命令的结果\cvdoubleitem也到达了日期的第一列。

moderncv我认为可能性 1 最适合您情况下的经典风格布局......

答案2

multicol与或无关moderncv,只是\\会删除其前后的空格,因为通常您不希望它们蔓延。 和\hspace{xxx}就像普通的单词空格一样,只有特定的宽度,所以 也会被删除。 如果您真的想进行这种级别的显式格式化,您需要的是\hspace*{xxx}

相关内容