While the fonts and the respective packages are being built, as pragmatic as it can be, one can get away with the following inline TikZ drawings
\documentclass{article}
\usepackage{tikz}
\newcommand{\dflat}{\tikz[baseline=-1.2mm] \node {\reflectbox{$\flat$}};}
\newcommand{\sflat}{\tikz[baseline=-1.2mm] \node {\reflectbox{$\flat$}$\flat$};}
\newcommand{\dsharp}{\hskip3pt \tikz[baseline=-1.2mm] {%
\clip (-2pt,-6pt) rectangle (-.2pt,6pt); \node at (0,0) {$\sharp$};}\hskip3pt
}
\newcommand{\ssharp}{\tikz[baseline=-1.2mm] {%
\node[inner sep=0mm] at (0,0) {$\sharp$};\node at (1.7pt,0.55pt) {$\sharp$};}
}
\begin{document}
\parbox{5cm}{
This is some random text to use the symbols \dflat, \sflat,\dsharp and \ssharp inline.
It can be improved by assigning some input parameters and adjusting the kerning as
C~{\hskip-7pt\dflat}, A~{\hskip-6pt\dsharp} or D~{\hskip-6pt\ssharp}
}
\end{document}
I will not attempt to make stupid comments since I know almost nothing about typography and kerning but this can be automated at will. Also I am not sure if these commands I have defined are robust. Please consider this as a proof of concept.
Addition by Jake:
By using \tikz [baseline] \node [anchor=base, inner sep=0pt]
, the nodes will automatically be positioned on the text line like a character would, so the vertical position doesn't have to be adjusted manually.
When defining TikZ commands to be used in text lines, it is usually a good idea to specify lengths in terms of ex
and em
, since these depend on the surrounding font size. That way, the symbols will scale with the text.
\documentclass{article}
\usepackage{tikz}
\newcommand{\dflat}{\tikz [baseline] \node [anchor=base, inner sep=0pt] {\reflectbox{$\flat$}};}
\newcommand{\sflat}{\tikz [baseline] \node [anchor=base, inner sep=0pt] {\reflectbox{$\flat$}$\flat$};}
\newcommand{\dsharp}{\tikz [baseline] {%
\clip (-0.2em,-1ex) rectangle (-0.01em,2ex);
\node[anchor=base, inner sep=0pt] {$\sharp$};}
}
\newcommand{\ssharp}{\tikz[baseline] {%
\node[anchor=base,inner sep=0pt,name=leftsharp] at (0,0) {$\sharp$};
\node at (leftsharp.east) [xshift=-0.25em, yshift=0.1ex, inner sep=0pt,anchor=west] {$\sharp$};}
}
\begin{document}
\parbox{5cm}{
This is some random text to use the symbols \dflat, \sflat, \dsharp and \ssharp inline.
It can be improved by assigning some input parameters and adjusting the kerning as
C\dflat, A\dsharp or D\ssharp
}
\parbox{5cm}{\Large
The symbols scale with the text:
C\dflat, A\dsharp or D\ssharp
}
\end{document}
You can use a combination of geometry
(to change the top and bottom margings) and the adjustwidth
environment provided by the changepage
package (this uses internally a list and it's similar to your changemargin
environment):
\documentclass{article}
\usepackage[paperheight=14cm]{geometry}
\usepackage{changepage}
\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\newpage
\newgeometry{top=0.5cm, bottom=0.5cm}
\begin{adjustwidth}{-2cm}{-1cm}
\lipsum[4]
\end{adjustwidth}
\lipsum[1]
\begin{adjustwidth}{1cm}{2cm}
\lipsum[3]
\end{adjustwidth}
\lipsum[4]
\newpage
\restoregeometry
\lipsum[1-3]
\newpage
\newgeometry{top=2.5cm, bottom=2.5cm}
\begin{adjustwidth}{2cm}{2cm}
\lipsum[4]
\end{adjustwidth}
\lipsum[4]
\begin{adjustwidth}{3cm}{-3cm}
\lipsum[3]
\end{adjustwidth}
\end{document}
I strongly suggest you, as a personal opinion, not to do this.
Best Answer
Your question is not very clear (it always helps if you include a document that shows the problem) but this
Is a document that increases the text width by 2cm and uses a Rain symbol.