![부정적인 vspace가 작동하도록 하기](https://rvso.com/image/330738/%EB%B6%80%EC%A0%95%EC%A0%81%EC%9D%B8%20vspace%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%98%EB%8F%84%EB%A1%9D%20%ED%95%98%EA%B8%B0.png)
노래의 가사 시트와 코드 시트를 생성하는 내 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}