如何在小节标题中环绕右对齐文本?

如何在小节标题中环绕右对齐文本?

我想右对齐子部分标题中的日期。标题文本的其余部分应围绕该日期排列。我尝试使用包裹图但它似乎在子部分命令中不起作用。

例子:

\titleformat{\subsection}{\bfseries}{}{0pt}{\noindent#1}
\setcounter{secnumdepth}{0}
\subsection{%
    \SomehowFloatThisRight{2016-12-11}
    Integer vitae neque vitae eros fringilla rutrum vestibulum in pede adipiscing
    mi dapibus condimentum etiam felis risus
}

输出:

| Integer vitae neque vitae eros fringilla rutrum     2016-12-11 |
| vestibulum in pede adipiscing mi dapibus condimentum etiam     |
| felis risus                                                    |

答案1

Piet 答案的一个变体,具有更清晰的界面:

\documentclass{article}
\usepackage{titlesec}

\usepackage{lipsum}

\titleformat{name=\subsection,numberless}
  {\bfseries}
  {}
  {0pt}
  {\typesetdatesubsection}

\newlength{\datespace}
\newcommand{\datesubsection}[2]{%
  \settowidth{\datespace}{\bfseries #1}%
  \def\thissubsectiondate{#1}\subsection*{#2}%
}

\newcommand{\typesetdatesubsection}[1]{%
  \makebox[0pt][l]{\makebox[\columnwidth][r]{\thissubsectiondate}}%
  \raggedright
  \parshape 2 
    0pt \dimexpr\columnwidth-\datespace-3em\relax
    0pt \columnwidth
  #1%
}

\begin{document}

\lipsum[2]

\datesubsection{2016-12-11}{Integer vitae neque vitae eros fringilla rutrum
  vestibulum in pede adipiscing mi dapibus condimentum etiam felis risus}

\lipsum[3]

\datesubsection{2016-11-11/2016-12-11}{Integer vitae neque vitae eros fringilla rutrum
  vestibulum in pede adipiscing mi dapibus condimentum etiam felis risus}

\end{document}

我使用是\raggedright因为否则排版会更加麻烦。

在此处输入图片描述

答案2

我必须说,我发现这种格式化小节标题的方式很奇怪,可能会让读者感到困惑。

也就是说,您可以使用 和 来执行此操作\hangindent\hangafter但是,这些必须在段落开始之前给出,并且您需要“浮动”文本的大小。因此您必须指定此章节标题,否则就太迟了。无论如何,这更好,以确保此代码不会进入目录,因为我确信它会在那里造成严重破坏。我假设此代码不应该进入目录。因此,它被放在 而不是\titleformat\subsection

无论如何,这是我的解决方案。我在日期前留出 1cm 的额外空间,以便将其与标题清晰地分开。

\documentclass{article}

\usepackage{titlesec}
\setcounter{secnumdepth}{0}
\newlength{\SubsectionFloatLength}
\newcommand{\FloatRightText}{}
\newcommand{\SubsectionFloatRight}[1]{\settowidth{\SubsectionFloatLength}{\hspace{1cm}\bfseries#1}%
       \renewcommand{\FloatRightText}{#1}}
\titleformat{\subsection}{\bfseries}{}{0pt}{\hangindent-\SubsectionFloatLength\hangafter-1\noindent
    \rlap{\makebox[\linewidth][r]{\FloatRightText}}}
\begin{document}

\tableofcontents

\SubsectionFloatRight{2016-12-11}
\subsection {Integer vitae neque vitae eros fringilla rutrum vestibulum in pede adipiscing
    mi dapibus condimentum etiam felis risus}

\end{document}

在此处输入图片描述

相关内容