有没有办法让 Latex 将空格字符串解释为空格字符串?

有没有办法让 Latex 将空格字符串解释为空格字符串?

我需要让代码中的空格与最终 pdf 中的空格相对应,但 latex 会自动将一串空格替换为一个空格。 是否有可能以某种方式改变这种行为?

我需要使用空格作为单位,并且我需要代码不长于实际空间,并且可读,所以像\hspace或这样的代码\将不起作用。

(我正在尝试在歌词中添加和弦。我需要将它们放在准确的位置,并且我需要能够在编写它们时看到它们最终会出现在哪里。我知道,有用于此目的的软件包,但调整我的文档以适应这些软件包的工作量太大了(我现在有 8k 行))

例子:

\documentclass{article}
\usepackage{tgcursor}
\renewcommand*\familydefault{\ttdefault}
\usepackage[T1]{fontenc}
\begin{document}
        A                 E
        
Should auld acquaintance be forgot
\end{document}

呈现为

A E
Should auld acquaintance be forgot

我需要它用空格来渲染,因为它们在代码中。

答案1

TeX 不是文字处理器:它允许你放置和弦确切地将它们放到您想要的位置,无需猜测。

\documentclass{article}

\newcommand{\addchord}[2]{%
  \begin{tabular}[b]{@{}c@{}}\makebox[0pt]{#2}\\#1\end{tabular}%
}

\begin{document}

Should \addchord{au}{A}ld acquaintance b\addchord{e}{E} forgot

Should \addchord{au}{A}ld acquaintance b\addchord{e}{E} forgot

\end{document}

在第一行中,和弦位于元音(或双元音)上方,在第二种情况下,和弦位于音节上方,选择您的风格。

在此处输入图片描述

你想要更少的垂直空间吗?只需修改定义:

\documentclass{article}

\newcommand{\addchord}[2]{%
  \begin{tabular}[b]{@{}c@{}}%
    \makebox[0pt]{\small #2}\\[-0.5ex]
    #1
  \end{tabular}%
}

\begin{document}

Should \addchord{au}{A}ld acquaintance b\addchord{e}{E} forgot

Should \addchord{auld}{A} acquaintance \addchord{be}{E} forgot

\end{document}

在此处输入图片描述

如果您希望对输入文件进行最少的更改并且对等宽字体感到满意:

\documentclass{article}
\usepackage{tgcursor}
\usepackage[T1]{fontenc}
\usepackage{shortvrb}

\renewcommand*\familydefault{\ttdefault}
\MakeShortVerb{|}


\begin{document}

|       A                 E|

Should auld acquaintance be forgot

\end{document}

在此处输入图片描述

答案2

您还可以使用ctan 的音乐包,例如package leadsheets。为了演示目的,我放了一些有和弦和没有和弦的歌词。

演示歌曲

\documentclass[12pt]{article}

\usepackage{leadsheets}

\begin{document}
  \begin{song}{title={Demo verses}, music={aky-her}}
    \begin{verse}
    
    Should \chord{A}auld acquaintance \chord{E}be forgot\\  
    and yada yada yada \dots{} \\
    and \chord{A}yada yada  \chord{E}yada \dots{} \\
  
    \end{verse}
  \end{song}
\end{document}

答案3

我的建议是制作一个宏,告诉 Latex 将单词和和弦排版在同一位置,居中,并让和弦垂直上升一段距离。这可以通过混合使用\clap{}和来实现\hspace{}

我还建议增加线路分布,例如到\doublespacing(从setspace)。

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage{setspace}

\NewDocumentCommand\chord{O{12pt}mm}{%
    % #1 vertical distance
    % #2 word
    % #3 chord
    \settowidth{\dimen0}{#2}%
    \hspace{\dimexpr\dimen0/2}%
    \raisebox{#1}{\clap{#3}}\clap{#2}%
    \hspace{\dimexpr\dimen0/2}}


\begin{document}
\parindent=0pt      % No indentation
\parskip=12pt       % vertical space between paragraphs
\setstretch{2}      % increased space between lines

Should \chord{auld}{A} acquaintance \chord{be}{E} forgot

Should \chord{auld}{A} acquaintance \chord{be}{E} forgot


\end{document}

相关内容