summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/logical-markup-utils/quoted.sty
blob: 0d7f8f0226fdf46be0d215a5e4b7b00d4cba16ba (plain)
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
76
77
78
79
80
81
82
83
84
% Copyright (C) 2009 Michał Masłowski

% This file is free software: you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% This file is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
% General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program.  If not, see <http://www.gnu.org/licenses/>.
%
% As a special exception, when this file is read by TeX when
% processing a TeX source document, you may use the result without
% restriction.


\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{quoted}[2009/04/17 language-dependent inline quotes]

% Declare a language for quotes.  The arguments are the name of the
% language and all quote commands: outer left, outer right, inner left
% and inner right.
\newcommand{\quoted@declarelanguage}[5]{%
  \DeclareOption{#1}{%
    \let\quoted@outerleft=#2%
    \let\quoted@outerright=#3%
    \let\quoted@innerleft=#4%
    \let\quoted@innerright=#5}}

\quoted@declarelanguage{american}
  \textquotedblleft\textquotedblright
  \textquoteleft\textquoteright

\quoted@declarelanguage{british}
  \textquoteleft\textquoteright
  \textquotedblleft\textquotedblright

\quoted@declarelanguage{german}
  \quotedblbase\textquotedblleft
  \guillemotright\guillemotleft

\quoted@declarelanguage{polish}
  \quotedblbase\textquotedblright
  \guillemotleft\guillemotright

\ExecuteOptions{american}\relax % The default.
\ProcessOptions\relax

\newif\ifquoted@inquote\quoted@inquotefalse

% In English literature multi-paragraph dialogue has unmatched quotes
% -- left one is used on the beginning of each paragraph and right one
% only at the end of the entire speech.  Therefore, separate commands
% for left and right quotes are necessary.
\DeclareRobustCommand{\lquote}{%
  \ifquoted@inquote
    \quoted@innerleft
  \else
    \quoted@outerleft
  \fi}
\DeclareRobustCommand{\rquote}{%
  \ifquoted@inquote
    \quoted@innerright
  \else
    \quoted@outerright
  \fi}
  
% Since quotes inside quotes have different style, it is changed by
% the following command.
\DeclareRobustCommand{\inquote}{%
  \ifquoted@inquote
    \quoted@inquotefalse
  \else
    \quoted@inquotetrue
  \fi}

% On the above commands a command which quotes its argument is
% based.
\DeclareRobustCommand*{\quoted}[1]{%
  \lquote{\inquote#1}\rquote}