我这里有一个情况。我正在设计 IPA 元音表,并使用 IPA 字体为 IPA 字符创建了一个新的字体环境道洛斯 SIL像这样:\newfontfamily{\ipafont}{Doulos SIL}
现在我想在标题中使用此命令在 IPA 字母表中按语音方式写出“IPA”\NewEnviron{标题}使用环境包(就在之前找到\开始{文档})。
问题 添加\ipafont{}命令应用于一行,而不是包含要更改的字体的括号,该命令只是将其自身应用于行的其余部分,弄乱了我漂亮的标题。请参阅下面的代码和图片:
%%% -*- mode:latex; mode:font-lock; -*-
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{geometry}
%HEADER FOOTER
\usepackage{fancyhdr}
\lhead{\textsc{Sounds in American English}} \chead{\textsc{}} \rhead{\textsc{}
\lfoot{\textsc{created on \today \space \currenttime}} \cfoot{\textsc{}}} \rfoot{\textsc{-\thepage-}}
\renewcommand{\headrulewidth}{0.1pt}
\renewcommand{\footrulewidth}{0.1pt}
\pagestyle{fancy}%ADD HEADER FOOTER TO PAGE EXCEPT TITLE PAGE
%USE THISPAGESTYLE{EMPTY} BELOW MAKETITLE OR {FANCY}
\usepackage{datetime}
\usepackage{vowel}
\usepackage{soul} % use this (many fancier options)
\usepackage{tabularx}
\usepackage{pdflscape}
%\setmainfont{Doulos SIL}
\newfontfamily{\ipafont}{Doulos SIL}%ADD FONT IN PREAMBLE, USAGE IN BODY: \otherfont{some text}
%OR {\fontspec{Zapfino} different text} IN BODY FOR ONE-TIME USE
%HIGHLIGHTER CODE
\usepackage{tikz}
\usepackage{amsmath}
\makeatletter
\newenvironment{btHighlight}[1][]
{\begingroup\tikzset{bt@Highlight@par/.style={#1}}\begin{lrbox}{\@tempboxa}}
{\end{lrbox}\bt@HL@box[bt@Highlight@par]{\@tempboxa}\endgroup}
\newcommand\btHL[1][]{%
\begin{btHighlight}[#1]\bgroup\aftergroup\bt@HL@endenv%
}
\def\bt@HL@endenv{%
\end{btHighlight}%
\egroup
}
\newcommand{\bt@HL@box}[2][]{%
\tikz[#1]{%
\pgfpathrectangle{\pgfpoint{0pt}{0pt}}{\pgfpoint{\wd #2}{\ht #2}}%
\pgfusepath{use as bounding box}%
\node[anchor=base west, fill=orange!30,outer sep=0pt,inner xsep=0.2em, inner ysep=0.1em, #1]{\usebox{#2}};
}%
}
\makeatother
\newcommand{\tikzhighlight}[2][red]{%
{\btHL[fill=#1!10,draw=#1,rounded corners]#2}%
}
\newcommand{\BlankCell}{}
\newcommand{\ex}[1]{\small{\tikzhighlight[blue]{#1}\hspace{.5em}}}
\newcommand{\oex}[1]{\small{\tikzhighlight[yellow]{#1}\hspace{.5em}}}
\newcommand{\vl}[1]{\Large{[\ipafont{#1}}]}
\usepackage{tikz}
\usetikzlibrary{calendar,shapes,backgrounds}
\usepackage{environ}
\NewEnviron{heading}{\begin{figure}[h!]\centering\begin{tikzpicture}[align=center,background rectangle/.style={fill=white!05},framed]\node {\BODY};\end{tikzpicture}\end{figure}}
\begin{document}
%\maketitle
\thispagestyle{fancy}
% \nopagebreak[4]
\begin{landscape}
\begin{heading}
\Large IPA [\ipafont{aɪ pʰiː eɪ}] Vowel Chart for\\\Large Californian English
\end{heading}
\begin{center}
{\vowelhunit=8.5em
\begin{vowel}
%\putcvowel[l]{i}{1}
\putvowel[l]{\vl{i} \ex{b\textbf{ea}d}}{0pt}{0pt}
\putcvowel[r]{\vl{y} \ex{\st{f\textbf{üh}len}}}{1}
\putcvowel[l]{\vl{e} \ex{b\textbf{ay}ed}}{2}
\putcvowel[r]{\vl{ø} *}{2}
\putcvowel[l]{\vl{ɛ} \ex{b\textbf{e}t,b\textbf{e}d}}{3}
\putcvowel[r]{\vl{œ} *}{3}
\putcvowel[l]{\vl{a} *}{4}
\putcvowel[r]{\vl{ɶ} *}{4}
\putcvowel[l]{\vl{ɑ} \ex{p\textbf{o}d}}{5}
\putcvowel[r]{\vl{ɒ} *}{5}
\putcvowel[l]{\vl{ʌ} \ex{b\textbf{u}d}}{6}
\putcvowel[r]{\vl{ᴐ} \ex{b\textbf{o}y (diphthong)}}{6}
\putcvowel[l]{\vl{ɤ} *}{7}
\putcvowel[r]{\vl{}o \ex{b\textbf{o}de}}{7}
\putcvowel[l]{\vl{ɯ} *}{8}
\putcvowel[r]{\vl{u} \ex{b\textbf{oo}ed}}{8}
\putcvowel[l]{\vl{ɨ} *}{9}
\putcvowel[r]{\vl{ʉ} *}{9}
\putcvowel[l]{\vl{ɘ} *}{10}
\putcvowel[r]{\vl{ɵ} *}{10}
\putcvowel{\vl{ə} \ex{\textbf{a}bout,\textbf{a}bove}}{11}
\putcvowel[l]{\vl{ɜ} \oex{b\textbf{u}st} *}{12}
\putcvowel[r]{\vl{ɞ} *}{12}
\putcvowel[l]{\vl{I} \ex{b\textbf{i}d}}{13}
\putcvowel[r]{\vl{Y} *}{13}
\putcvowel{\vl{ʊ} \ex{g\textbf{oo}d}}{14}
\putcvowel{\vl{ɐ} *}{15}
\putcvowel{\vl{æ} \ex{b\textbf{a}d}}{16}
\end{vowel}
}%
\end{center}
\tikzhighlight[blue]{CA English} \hspace{.5em}\tikzhighlight[green]{OH English}
\end{landscape}
\section*{Vowels}
\begin{tabularx}{\textwidth}{l}
/i/ as in seat \\
/ɪ/ as in sit \\
/eɪ/ as in cake \\
/ɛ/ as in met \\
/æ/ as in cat \\
/ɑ/ as in father \\
/ə/ as in bun \\
/ɔ/ as in law \\
/oʊ/ as in boat \\
/ʊ/ as in wood \\
/u/ as in two \\
/ər/ as in heard \\
/aɪ/ as in mine \\
/aʊ/ as in mouse \\
/ɔɪ/ as in boy \\
\end{tabularx}
\end{document}
答案1
标准\small
和等命令\Large
,以及您的字体选择命令\ipafont
都不是带有参数的命令(类似于\textbf
,举个例子)。
因此你的命令必须以不同的方式定义:
\newcommand{\ex}[1]{{\small\tikzhighlight[blue]{#1}}\hspace{.5em}}
\newcommand{\oex}[1]{{\small\tikzhighlight[yellow]{#1}}\hspace{.5em}}
\newcommand{\vl}[1]{{\Large[{\ipafont #1}]}}
例如,在最后一个命令中,\vl{x}
将被替换为
{\Large[{\ipafont x}]}
外侧的一对括号分隔声明\Large
,内侧的一对括号分隔\ipafont
字体选择。因此x
将以“大”尺寸和 Doulos SIL 打印,而括号将使用主文档字体。
代码也一样
\begin{heading}
\Large IPA [\ipafont{aɪ pʰiː eɪ}] Vowel Chart for\\\Large Californian English
\end{heading}
应该是
\begin{heading}
\Large IPA [{\ipafont aɪ pʰiː eɪ}] Vowel Chart for\\Californian English
\end{heading}
不需要用括号隔离\Large
,因为环境形成了一个限制声明操作的组。
如果你更喜欢使用类似 Doulos SIL 的命令\textbf
,那么在序言中发出代码
\DeclareTextFontCommand{\textipa}{\ipafont}
然后你就可以写
\textipa{aɪ pʰiː eɪ}
因此只有参数才会在 Doulos SIL 中排版,而不会发生泄漏。
heading
实际上,我认为将 的内容作为单个\node
嵌入中没有什么意义tikzpicture
。此外,使用figure
环境肯定是错误的。只需说
\newenvironment{heading}
{\begin{center}\Large}
{\end{center}}
现在
\begin{heading}
IPA [{\ipafont aɪ pʰiː eɪ}] Vowel Chart for\\Californian English
\end{heading}
将给出正确的结果(两条线之间的距离正确,而这在 a 中是无法获得的\node
)。
然而,如果你真的需要,tikzpicture
而且这只是一个简化版本,不使用figure
,但是center
。