设置 chapquote,格式化

设置 chapquote,格式化

我怎样才能将作者完全右对齐?或者更好的是,你能告诉我可以使用哪些命令吗?我在序言中有这个:

\makeatletter                                       
\newenvironment{chapquote}[2][2.7em]
  {\setlength{\@tempdima}{#1}
   \def\chapquote@author{#2}
   \parshape 1 \@tempdima \dimexpr\textwidth-2\@tempdima\relax
   \itshape}
  {\newline\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdima}\par\bigskip}
\makeatother

进而:

\begin{document}

  \chapter{Question}

    \begin{chapquote}
              {Name Surname, \textit{Book name} \cite{Handler}}
              ,,Lorem ipsum dolor sit amet foo bar.''
    \end{chapquote}

结果是:

图像

我发现,当我在下面的命令中使用“em”值时,我可以同时设置右侧和左侧的填充(或类似的东西)。但我想分别设置右侧和左侧的填充。你能帮助/指导我吗?

谢谢

\newenvironment{chapquote}[2][1em]

答案1

这里,我引入了一个额外的参数chapquote。如果它(第一个强制参数)为空白,则右边距与左边距(可选参数)相同。如果第一个强制参数非空,则它使用可选参数作为左边距,使用第一个强制参数作为右边距。

\documentclass{book}
\usepackage[showframe]{geometry}
\makeatletter                                       
\newenvironment{chapquote}[3][2.7em]
  {\setlength{\@tempdima}{#1}
   \ifx\relax#2\relax\setlength{\@tempdimb}{#1}\else\setlength{\@tempdimb}{#2}\fi
   \def\chapquote@author{#3}
   \parshape 1 \@tempdima \dimexpr\textwidth-\@tempdima-\@tempdimb\relax
   \itshape}
  {\newline\par\normalfont\hfill--\ \chapquote@author\hspace*{\@tempdimb}\par\bigskip}
\makeatother
\begin{document}
  \chapter{Question}

    \begin{chapquote}{150pt}
              {Name Surname, \textit{Book name} \cite{Handler}}
              ,,Lorem ipsum dolor sit amet foo bar.''
    \end{chapquote}

    \begin{chapquote}{}
              {Name Surname, \textit{Book name} \cite{Handler}}
              ,,Lorem ipsum dolor sit amet foo bar. Lorem ipsum dolor sit amet foo bar. Lorem ipsum dolor sit amet foo bar. Lorem ipsum dolor sit amet foo bar.''
    \end{chapquote}

    \begin{chapquote}{0pt}
              {Name Surname, \textit{Book name} \cite{Handler}}
              ,,Lorem ipsum dolor sit amet foo bar. Lorem ipsum dolor sit amet foo bar. Lorem ipsum dolor sit amet foo bar. Lorem ipsum dolor sit amet foo bar.''
    \end{chapquote}
\end{document}

在此处输入图片描述

如果一个人确实想要默认右边距为 0pt,而不是与左边距相同,则需要修改这一行:

\ifx\relax#2\relax\setlength{\@tempdimb}{0pt}\else\setlength{\@tempdimb}{#2}\fi

相关内容