我需要让代码中的空格与最终 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}