부정적인 vspace가 작동하도록 하기

부정적인 vspace가 작동하도록 하기

노래의 가사 시트와 코드 시트를 생성하는 내 TeX 코드(명령 정의의 매개변수 포함)는 데이터베이스 데이터에 액세스하고 이를 한 줄씩 처리하는 다른 코드에 의해 동적으로 생성되므로 간략하게 정리된 MWE가 이상하게 보일 수 있지만 양해해 주시기 바랍니다.

표시되는 코드 조각의 의도는 두 가지 글꼴 크기(줄 바꿈 시 중요)와 관련된 기본 줄 간격 외에도 명확성을 위해 각 "단락"(가사 줄) 사이에 0.3em을 추가하는 것입니다. 그러나 일본어 줄 바로 뒤에 로마자 줄이 나타날 때마다 나는 여분의 parskip을 원하지 않기 때문에 \vspace동일한 양의 음수를 사용하여 이를 부정하려고 합니다 . 지금까지는 매우 훌륭했습니다. 다음 파일이 작동합니다.

\documentclass{ujarticle}
\usepackage[a4paper, margin=6mm]{geometry}
\usepackage{needspace}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\newcommand{\romaji}[1]{\begingroup\fontsize{10}{11.5}\selectfont
  {#1}\endgroup}
\newenvironment{stanza}
{
  \vspace{1em}
  \setlength{\parskip}{0.3em}
  \fontsize{12}{13.5}\selectfont
  \begin{samepage}
}
{
  \end{samepage}
}            

\begin{document}
\sffamily
\gtfamily
\raggedright
\raggedbottom
\pagestyle{empty}

\begin{stanza}
賛美して目を向けてる あなたに\par
\vspace{-0.3em}\nopagebreak
\romaji{sambi\ shite\ me\ o\ muketeru,\ anata\ ni\par}
\nopagebreak
もとめて待ち望んでる あなたを\par
\vspace{-0.3em}\nopagebreak
\romaji{motomete\ machi\ nozonderu,\ anata\ o\par}
\end{stanza}

\end{document}

그러나 로마자 스타일을 추가하면(내 테스트 케이스에서는 이탤릭체로 표시) 스타일이 깨져서 엄청난 추가 공간을 얻게 됩니다. 아래 왼쪽과 오른쪽 스크린샷의 유일한 차이점은 \textit{...}로마자 명령 정의에 다음을 추가한 것입니다.

\newcommand{\romaji}[1]{\begingroup\fontsize{10}{11.5}\selectfont
  \textit{{#1}}\endgroup}

두 가지의 출력은 다음과 같습니다.

신비한 간격 http://l4jp.com/tmp/TeX-tests.png

로그 파일의 불만사항은 다음과 같습니다.

Runaway argument?
{{sambi\ shite\ me\ o\ muketeru,\ anata\ ni !
Paragraph ended before \text@command was complete.

말이 되지만 오류가 \textit{}있을 때만 해당 오류가 발생합니다. 아마도 파서가 이중 중괄호를 탐색할 수 없는 것일까요? 닫는 중괄호 뒤의 를 이동하면 \par오류가 사라지지만 \vspace모든 경우에 이 무시됩니다.

답변1

\romaji문제는 이탤릭체를 사용하도록 지시하는 방법에 있습니다 . 명령에는 \textit{}인수가 필요하므로 단락 나누기를 처리할 수 없습니다. 이것이 를 만났을 때 불평하는 이유입니다 \par. 한 가지 옵션은 \par모든 명령의 끝에서 간단히 생략하는 것입니다 \romaji. 아마도 더 나은 옵션은 를 사용하는 것입니다 {\itshape …}. 이는 다음에 나오는 모든 항목에 적용되고 단락 나누기를 처리할 수 있습니다. 예를 보려면 다음 MWE를 참조하세요.

\documentclass{article}
\newcommand{\romaji}[1]{\begingroup\fontsize{10}{11.5}\selectfont{\itshape {#1}}\endgroup}
\begin{document}

\textit{sambi\ shite\ me\ o\ muketeru,\ anata\ ni}

{\itshape sambi\ shite\ me\ o\ muketeru,\ anata\ ni\par}

\romaji{sambi\ shite\ me\ o\ muketeru,\ anata\ ni\par}
\end{document}

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

관련 정보