File: exaccent.sty

package info (click to toggle)
tipa 19960624-3
  • links: PTS
  • area: main
  • in suites: slink
  • size: 880 kB
  • ctags: 26
  • sloc: perl: 1,636; sh: 233; makefile: 80
file content (75 lines) | stat: -rw-r--r-- 2,508 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
%
% `exaccent.sty' for extended accent.
%
%   Copyright(C) 1996 by FUKUI Rei
%
% This file is based on `tsipa.sty' for TSIPA created by
%   KOBAYASHI Hajime, FUKUI Rei and SHIRAKAWA Shun.
%
%   Version 1.0  1996/06/10
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{exaccent}[1996/06/10 extended accent Version 1.0]

{\slshape\xdef\@slshapename{\f@shape}}
{\itshape\xdef\@itshapename{\f@shape}}

\newcommand\upperaccent{\@ifnextchar[{\upper@accent a\empty}%
  {\upper@accent a\empty[\z@]}}
\newcommand\Upperaccent{\@ifnextchar[{\upper@accent b\empty}%
  {\upper@accent b\empty[\z@]}}
\newcommand\loweraccent{\@ifnextchar[{\lower@accent a\empty}%
  {\lower@accent a\empty[\z@]}}
\newcommand\Loweraccent{\@ifnextchar[{\lower@accent b\empty}%
  {\lower@accent b\empty[\z@]}}

\def\upper@accent#1#2[#3]#4#5{{\leavevmode
  \setbox\z@\hbox{#5}\setbox\@ne\hbox{#2%
    \if a#1\char#4\else#4\fi}%
  \ifx\empty#5\empty\box\@ne\else
  \@getaccshift \let\c@lcshift\@pshift
  \dimen\z@\ht\@ne
  \ifdim\ht\@ne>1ex \advance\dimen\z@ -1ex \else
  \ifdim\ht\@ne=\z@ \dimen\z@\dp\@ne \fi\fi
  \vbox{\hsize\wd\z@\offinterlineskip
    \hb@xt@\z@{\@accshift{#3}\hb@xt@\wd\z@{%
     \hss\vbox to \dimen\z@{\hbox{\box\@ne}\vss}\hss}\hss}
    \kern#3
    \hbox{#5}}\fi}}

\def\lower@accent#1#2[#3]#4#5{{\leavevmode
  \setbox\z@\hbox{#5}\setbox\@ne\hbox{#2%
    \if a#1\char#4\else#4\fi}%
  \ifx\empty#5\empty\box\@ne\else
  \@getaccshift \let\c@lcshift\s@bshift
  \dimen\z@\ht\@ne
  \ifdim\ht\@ne>1ex \advance\dimen\z@ -1.1ex \else
  \ifdim\ht\@ne=\z@ \dimen\z@\dp\@ne \fi\fi
  \vtop{\hsize\wd\z@\offinterlineskip
    \hbox{#5}
    \kern#3
    \hbox{\@accshift{#3}\hb@xt@\wd\z@{%
      \hss\vbox to \dimen\z@{\hbox{\box\@ne}\vss}\hss}}}\fi}}

\newcommand\@getaccshift{\def\@accshift##1{}%
  \ifx\f@shape\@slshapename\let\@accshift\@accshiftsl\fi
  \ifx\f@shape\@itshapename\let\@accshift\@accshiftsl\fi}

\newcommand\@accshiftsl[1]{\c@lcshift{#1}\kern-.16667\dimen\@ne}

\newcommand\@pshift[1]{%
  \dimen\@ne-\ht\z@          % get height of the box to be accented
  \advance\dimen\@ne -#1%    % add margin between the letter and accent
  \ifdim\ht\@ne>1ex
    \advance\dimen\@ne 1ex\else
  \ifdim\ht\@ne=\z@
    \advance\dimen\@ne -\dp\@ne\fi\fi}
    
\newcommand\s@bshift[1]{%
  \dimen\@ne\dp\z@                % get depth of the box to be accented
  \ifdim\ht\@ne>\z@
    \advance\dimen\@ne \ht\@ne\fi % add ht of the accent
  \ifdim\ht\@ne>1ex
    \advance\dimen\@ne #1\fi}     % add margin between the letter and accent

\endinput