如何在 \NewEnviron(使用 eviron 包的新环境)内隔离/限制/包含新字体

如何在 \NewEnviron(使用 eviron 包的新环境)内隔离/限制/包含新字体

我这里有一个情况。我正在设计 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}

IPA元音表

答案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

相关内容