가능한 경우 견적과 같은 줄에 견적 귀속을 오른쪽 정렬하려면 어떻게 해야 합니까?

가능한 경우 견적과 같은 줄에 견적 귀속을 오른쪽 정렬하려면 어떻게 해야 합니까?

인용문은 속성이 오른쪽으로 정렬된 상태로 설정되는 경우가 많습니다.

인용문 아래 줄에 오른쪽 정렬 귀속이 있는 인용문

귀속은 인용문 뒤의 새 줄에 있습니다. 그러나 인용의 마지막 줄에 귀속을 담기에 충분한 빈 공간이 있다고 가정해 보십시오. 그런 다음 과도한 공백을 피하기 위해 같은 줄에 있기를 원할 수 있습니다.

같은 줄에 오른쪽 정렬 귀속이 있는 인용문

quoteattr우리는 견적이 적합한지 계산하고 그에 따라 자동으로 배치하는 명령(호칭)을 정의하려고 합니다 .

명령 정의가 없는 코드:

\documentclass[12pt]{book}

\begin{document}

\quoteattr{Early to bed and early to rise,\\
Makes a man healthy, wealthy, and wise.}{Benjamin Franklin, 1706--1790}

\quoteattr{Seek not the favor of the multitude; it is seldom got by honest and lawful means. But seek the testimony of few; and number not voices, but weigh them.}{Immanuel Kant, 1724--1804}

\end{document}

답변1

tabto이와 관련하여 패키지가 도움이 될 수 있는 것 같습니다 .

\documentclass[12pt]{book}
\usepackage{tabto}
\def\quoteattr#1#2{\setbox0=\hbox{#2}#1\tabto{\dimexpr\linewidth-\wd0}\box0}
\parskip 1em
\begin{document}
\quoteattr{Early to bed and early to rise,\\
Makes a man healthy, wealthy, and wise.}{Benjamin Franklin, 1706--1790}

\quoteattr{Seek not the favor of the multitude; it is seldom got by honest and lawful means. But seek the testimony of few; and number not voices, but weigh them.}{Immanuel Kant, 1724--1804}

\quoteattr{In attempting to make this not give enough space... Seek not the favor of the multitude; it is seldom got by honest and lawful means. But seek the testimony of few; and number not voices, but weigh them.}{Immanuel Kant, 1724--1804}
\end{document}

여기에 이미지 설명을 입력하세요

답변2

이는 다음의 매크로를 사용하여 고전적인 TeX 방식으로 처리할 수 있습니다.TeXBook, p106, 페널티, 건너뛰기 및 상자를 조작하면 됩니다.

\def\signed #1 (#2){{\unskip\nobreak\hfil\penalty50
    \hskip2em\hbox{}\nobreak\hfil\sl#1\/ \rm(#2)
    \parfillskip=0pt \finalhyphendemerits=0 \par}}

그러면 다음과 같이 견적을 입력할 수 있습니다.

\begin{quote}Here is one way to solve the problem.
    \signed Donald E. Knuth (Berkeley, CA)
\end{quote}

같은 줄에 2em과 서명을 위한 공간이 있으면 거기에 있습니다. 그렇지 않으면 새 줄로 이동합니다. 물론 이름이나 위치보다는 이름만 원할 수도 있고, 좀 더 LaTeX 스타일을 원할 수도 있습니다. 이 경우 다음과 같이 할 수 있습니다.

\def\signed#1{{\unskip\nobreak\hfil\penalty50
    \hskip2em\hbox{}\nobreak\hfil\sl#1
    \parfillskip=0pt \finalhyphendemerits=0 \par}}

위와 같이 입력하지만 \signed{Donald E. Knuth}대신에 다음을 사용합니다.

답변3

\newsavebox이를 구현하기 위해 빈 줄을 채우는 길이를 찾는 데 사용합니다 . 는 항상 명목 길이가 0이므로 사용할 수 없습니다 \hfill. 대신 패키지를 사용하겠습니다 linegoal.

xifthen또한 조건을 작성하는 데에도 사용할 것입니다 .

두 번의 패스가 필요합니다.

\documentclass[12pt]{book}

\usepackage{linegoal}
\usepackage{xifthen}

\newsavebox{\quotebox}
\newlength{\emptywidth}% To save the length of empty space
\newlength{\attrwidth}% To save the length of the attribution

% Define the new command
\newcommand{\quoteattr}[2]{
  \begin{quote}#1%
  \begin{lrbox}{\quotebox}\hspace{\linegoal}\end{lrbox}
  \setlength{\emptywidth}{\linegoal}
  \settowidth{\attrwidth}{\textit{#2}}
  % The following line can be tweaked to force attributions
  % onto a new line if it would be a very tight squeeze
  \addtolength{\attrwidth}{0em}
  % Compare the two widths.
  \ifthenelse{\lengthtest{\emptywidth>\attrwidth}}
    % If it fits:
    {\null\hfill\textit{#2}}
    % If it doesn't:
    % We need to provide a stretch in this way because TeX
    % might compress a slightly-too-long line to prevent
    % a loose line followed by a lonely word. However, then
    % on the next run, TeX won't compress it because of the
    % following text on a new line.
    {\hspace{0pt plus \textwidth minus 3pt}\null\nopagebreak\linebreak\null\hfill{\textit{#2}}}%

  % For debugging, display the lengths.
  Empty space: \the\emptywidth
  \\Attribution space: \the\attrwidth
  \end{quote}
}

\begin{document}

\quoteattr{Early to bed and early to rise,\\
Makes a man healthy, wealthy, and wise.}{Benjamin Franklin, 1706--1790}

\quoteattr{Seek not the favor of the multitude; it is seldom got by honest and lawful means. But seek the testimony of few; and number not voices, but weigh them.}{Immanuel Kant, 1724--1804}

\end{document}

관련 정보