mergeron 2024.739105.6__py3-none-any.whl → 2024.739123.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mergeron might be problematic. Click here for more details.
- mergeron/__init__.py +1 -1
- mergeron/data/jinja2_LaTeX_templates/ftcinvdata_summarypaired_table_template.tex.jinja2 +100 -74
- mergeron/data/jinja2_LaTeX_templates/mergeron.cls +36 -42
- mergeron/data/jinja2_LaTeX_templates/mergeron_table_collection_template.tex.jinja2 +12 -9
- mergeron/data/jinja2_LaTeX_templates/setup_tikz_tables.tex +61 -45
- mergeron/gen/enforcement_stats.py +25 -21
- {mergeron-2024.739105.6.dist-info → mergeron-2024.739123.1.dist-info}/METADATA +2 -3
- {mergeron-2024.739105.6.dist-info → mergeron-2024.739123.1.dist-info}/RECORD +9 -9
- {mergeron-2024.739105.6.dist-info → mergeron-2024.739123.1.dist-info}/WHEEL +0 -0
mergeron/__init__.py
CHANGED
|
@@ -1,104 +1,130 @@
|
|
|
1
1
|
\begin{table}[bt]
|
|
2
|
-
((* if tmpl_data.obs_merger_class_0 == 'All Markets' *))
|
|
3
|
-
((* set obs_merger_class_0 = tmpl_data.obs_merger_class_0 *))
|
|
4
|
-
((* else *))
|
|
5
|
-
((* set obs_merger_class_0 = "Markets with, ``" + tmpl_data.obs_merger_class_0 + "''" *))
|
|
6
|
-
((* endif *))
|
|
7
2
|
|
|
8
|
-
|
|
3
|
+
|
|
4
|
+
((* if tmpl_data.test_regime == 'Enforcement' *))
|
|
9
5
|
((* set prop_title = "Proportion Enforced" *))
|
|
10
6
|
((* else *))
|
|
11
7
|
((* set prop_title = "Proportion Cleared" *))
|
|
12
8
|
((* endif *))
|
|
9
|
+
((* set prop_title = prop_title|replace(" ", "\\\\") *))
|
|
10
|
+
|
|
11
|
+
((* if tmpl_data.obs_merger_class_0 == 'All Markets' *))
|
|
12
|
+
((* set obs_merger_class_0 = "All Markets" *))
|
|
13
|
+
((* else *))
|
|
14
|
+
((* set obs_merger_class_0 = "Markets with, ``" + tmpl_data.obs_merger_class_0 + "''" *))
|
|
15
|
+
((* endif *))
|
|
13
16
|
|
|
14
17
|
((* set obs_merger_class_1 = "Markets with, ``" + tmpl_data.obs_merger_class_1 + "''" *))
|
|
15
18
|
|
|
16
19
|
\centering
|
|
17
|
-
\caption{FTC Merger Investigations Data}\label{tbl:FTCInvData_\JINVAR{
|
|
18
|
-
{\footnotesize \JINVAR{
|
|
20
|
+
\caption{FTC Merger Investigations Data}\label{tbl:FTCInvData_\JINVAR{- obs_summary_type }}
|
|
21
|
+
{\footnotesize \JINVAR{ obs_summary_type_title } \\
|
|
19
22
|
Grouped by Entry Conditions and Reporting Period \\[0.5\baselineskip]}
|
|
20
23
|
\begin{tikzpicture}[auto, font = \sffamily]
|
|
21
24
|
\begin{pgfonlayer}{background}
|
|
22
|
-
\matrix[
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
\matrix[
|
|
26
|
+
datatable,
|
|
27
|
+
nodes = {text width = 27pt,},
|
|
28
|
+
column 1/.style = {nodes = {
|
|
29
|
+
hdrtext,
|
|
30
|
+
text width=\JINVAR{ hdrcol_width -}, fill=OBSHDRFill,
|
|
31
|
+
},},
|
|
32
|
+
record matrix dimensions,
|
|
33
|
+
] (invres_rate_raw) {
|
|
34
|
+
\JINVAR{ tmpl_data.invdata_datstr -}
|
|
35
|
+
};
|
|
25
36
|
% Horizontal scoring for totals
|
|
26
|
-
\draw[color = OBSHDRFill, line width = 1pt] (
|
|
37
|
+
\draw[color = OBSHDRFill, line width = 1pt] (invres_rate_raw-\the\tnr-1.north west) -- (invres_rate_raw-\the\tnr-\the\tnc.north east);
|
|
27
38
|
% Vertical scoring for column groups
|
|
28
|
-
\draw[color = OBSHDRFill, line width = 1pt] (
|
|
29
|
-
\draw[color = OBSHDRFill, line width = 1pt] (
|
|
30
|
-
\draw[color = OBSHDRFill, line width = 1pt] (
|
|
39
|
+
\draw[color = OBSHDRFill, line width = 1pt] (invres_rate_raw-1-3.north east) -- (invres_rate_raw-\the\tnr-3.south east);
|
|
40
|
+
\draw[color = OBSHDRFill, line width = 1pt] (invres_rate_raw-1-5.north east) -- (invres_rate_raw-\the\tnr-5.south east);
|
|
41
|
+
\draw[color = OBSHDRFill, line width = 1pt] (invres_rate_raw-1-7.north east) -- (invres_rate_raw-\the\tnr-7.south east);
|
|
31
42
|
\end{pgfonlayer}
|
|
32
43
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
\matrix[
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
|
|
45
|
+
%% Header column - row heads - description
|
|
46
|
+
\matrix[
|
|
47
|
+
hcol,
|
|
48
|
+
above right=0pt of invres_rate_raw.north west,
|
|
49
|
+
nodes = {
|
|
50
|
+
text width=\JINVAR{- tmpl_data.hdrcol_width -},
|
|
51
|
+
text depth=10pt,
|
|
52
|
+
},
|
|
53
|
+
] (hdrcol_desc) {
|
|
54
|
+
\node[align = center,] { \JINVAR{- tmpl_data.hdrcol_desc_text } \\ }; \\
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
% Header row - column heads
|
|
58
|
+
\matrix[
|
|
59
|
+
hrow,
|
|
60
|
+
above right = 0 pt of hdrcol_desc.south east,
|
|
61
|
+
nodes = {
|
|
62
|
+
rotate = 90,
|
|
63
|
+
minimum height = 33pt,
|
|
64
|
+
text depth = 10pt,
|
|
65
|
+
align = left,
|
|
66
|
+
}, %
|
|
67
|
+
] (hdrrow_raw) {
|
|
68
|
+
{Relative \\ Frequency} &
|
|
69
|
+
{\JINVAR{ prop_title }} &
|
|
70
|
+
{Relative \\ Frequency} &
|
|
71
|
+
{\JINVAR{ prop_title }} &
|
|
72
|
+
{Relative \\ Frequency} &
|
|
73
|
+
{\JINVAR{ prop_title }} &
|
|
74
|
+
{Relative \\ Frequency} &
|
|
75
|
+
{\JINVAR{ prop_title }} \\
|
|
55
76
|
};
|
|
56
|
-
|
|
57
|
-
|
|
77
|
+
|
|
78
|
+
%% Header row - columns description -- Markets 0 - period 1-2
|
|
79
|
+
\matrix[hrow, above right = 0pt of hdrrow_raw.north west, nodes = {minimum height = 12.5pt, text width = 59.6pt,},] (descrow_pds) {
|
|
80
|
+
\JINVAR{ tmpl_data.obs_periods_str } & \JINVAR{ tmpl_data.obs_periods_str } \\
|
|
81
|
+
\JINVAR{ tmpl_data.mkt_counts_str_class_0 } & \JINVAR{ tmpl_data.mkt_counts_str_class_1 } \\
|
|
58
82
|
};
|
|
59
|
-
|
|
60
|
-
|
|
83
|
+
|
|
84
|
+
% Header row - Market-1
|
|
85
|
+
\matrix[hrow, above right = 0pt of descrow_pds.north west, nodes = {minimum height = 12.5pt, text width = 124.8pt},] (descrow_mkts) {
|
|
86
|
+
\JINVAR{ obs_merger_class_0 } & \JINVAR{ obs_merger_class_1 } \\
|
|
61
87
|
};
|
|
62
88
|
% Header row - columns description
|
|
63
|
-
\matrix[hrow, above
|
|
89
|
+
\matrix[hrow, above right = 0pt of descrow_mkts.north west, nodes = {minimum height = 12.5pt, text width = 255.2pt},] (descrow_obs) {
|
|
64
90
|
Observed Data \\
|
|
65
91
|
};
|
|
66
|
-
% Vertical scoring for column groups
|
|
67
|
-
\draw[color = white, line width = 1pt] (descrow_raw_pds1-1-1.north east) -- (enf_rate_raw-1-2.north east);
|
|
68
|
-
\draw[color = white, line width = 1pt] (descrow_raw_mkt1-1-1.north east) -- (enf_rate_raw-1-4.north east);
|
|
69
|
-
\draw[color = white, line width = 1pt] (descrow_raw_pds2-1-1.north east) -- (enf_rate_raw-1-6.north east);
|
|
70
|
-
|
|
71
|
-
% Header column - row heads
|
|
72
|
-
\matrix[hcol, left = 0pt of enf_rate_raw, nodes = {
|
|
73
|
-
text width = \JINVAR{ tmpl_data.hdrcol_raw_width -},
|
|
74
|
-
inner xsep = 3 pt,
|
|
75
|
-
},] (hdrcol_raw) {
|
|
76
|
-
\JINVAR{ tmpl_data.invdata_hdrstr -}
|
|
77
|
-
};
|
|
78
|
-
% Header column - row heads - description
|
|
79
|
-
\JINVAR{ tmpl_data.invdata_hdrcoldescstr }
|
|
80
92
|
|
|
81
|
-
|
|
93
|
+
%% Vertical scoring delineating column groups
|
|
94
|
+
\draw[color = white, line width = 1pt] (descrow_pds-1-1.north east) -- (invres_rate_raw-1-3.north east);
|
|
95
|
+
\draw[color = white, line width = 1pt] (descrow_mkts-1-1.north east) -- (invres_rate_raw-1-5.north east);
|
|
96
|
+
\draw[color = white, line width = 1pt] (descrow_pds-1-3.north east) -- (invres_rate_raw-1-7.north east);
|
|
97
|
+
|
|
98
|
+
%% Fill along header
|
|
82
99
|
\draw[color = OBSHDRFill, fill = OBSHDRFill,]
|
|
83
|
-
(
|
|
100
|
+
(hdrcol_desc.north west |- descrow_obs.north west)
|
|
84
101
|
rectangle
|
|
85
|
-
(
|
|
102
|
+
(hdrcol_desc.north east)
|
|
86
103
|
;
|
|
87
|
-
|
|
88
|
-
\draw[color = white, line width = 1pt] (descrow_raw_mkt1-1-1.north west) -- (enf_rate_raw-1-1.north west); #))
|
|
89
|
-
|
|
90
|
-
% Notes below table
|
|
91
|
-
\matrix[anytable,
|
|
92
|
-
below right = 4pt and 4pt of hdrcol_raw.south west,
|
|
93
|
-
nodes = {notetext, minimum height = 8pt, text width = \JINVAR{ tmpl_data.invdata_notewidth -}\linewidth,},
|
|
94
|
-
] (notestext) {%
|
|
95
|
-
\JINVAR{ tmpl_data.invdata_notestr -}
|
|
96
|
-
SOURCES: \\
|
|
97
|
-
% TODO: Table numbers need updating
|
|
98
|
-
% \(\cdot\) \fullcite{FTCInvData2003}, Table~4.1 and Table~10.2 \\
|
|
99
|
-
\JINVAR{ tmpl_data.invdata_sourcestr -}
|
|
100
|
-
% \(\cdot\) \fullcite{FTCInvData2011}, Table~4.1 and Table~10.2 \\
|
|
101
|
-
};
|
|
104
|
+
|
|
102
105
|
\end{tikzpicture}
|
|
106
|
+
|
|
107
|
+
\setlist{nosep}
|
|
108
|
+
\vspace{\baselineskip}
|
|
109
|
+
{\raggedright\sffamily\tiny%
|
|
110
|
+
%
|
|
111
|
+
% NOTES:
|
|
112
|
+
% \begin{itemize}
|
|
113
|
+
% \item Data for period, 2004--2011 calculated by subtracting reported figures for 1996--2003 from reported figures for 1996--2011
|
|
114
|
+
% \item Ranges of $\Delta HHI$ are defined as half-open intervals with \(\Delta_L \leqslant \Delta HHI < \Delta_H\), except that \(2500 \text{ pts.} \leqslant \Delta HHI \leqslant 5000 \text{ pts.}\) in the closed interval [2500, 5000] pts.
|
|
115
|
+
% \end{itemize}
|
|
116
|
+
|
|
117
|
+
% SOURCES:
|
|
118
|
+
% \begin{itemize}
|
|
119
|
+
% % \item \fullcite{FTCInvData2003}, Table~4.1 and Table~10.2
|
|
120
|
+
% \item Fed. Trade Comm'n (2003), at note~\cref{fn:FTCInvData1996to2003}
|
|
121
|
+
% \item Fed. Trade Comm'n (2011), at note~\cref{fn:FTCInvData1996to2011}
|
|
122
|
+
% \end{itemize}
|
|
123
|
+
\JINVAR{- tmpl_data.invdata_notestr -}
|
|
124
|
+
\vspace{\baselineskip}
|
|
125
|
+
\JINVAR{ tmpl_data.invdata_sourcestr -}
|
|
126
|
+
}
|
|
127
|
+
\vspace{\baselineskip}
|
|
103
128
|
\end{table}
|
|
104
129
|
|
|
130
|
+
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
\ExplSyntaxOn % Switch on expl3 syntax
|
|
3
|
-
\sys_ensure_backend: % load the backend code
|
|
4
|
-
\pdf_version_gset:n{1.7} % Use provided expl3 function
|
|
5
|
-
\ExplSyntaxOff % Switch off expl3 syntax
|
|
1
|
+
\ProvidesClass{mergeron}
|
|
6
2
|
|
|
7
3
|
\LoadClass{scrartcl}
|
|
8
4
|
\RequirePackage[singlespacing=true]{scrlayer-scrpage}
|
|
9
5
|
\KOMAoptions{
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
6
|
+
draft=off,
|
|
7
|
+
fontsize=12pt,
|
|
8
|
+
paper=letter,
|
|
9
|
+
DIV=12,
|
|
10
|
+
footnotes=multiple,
|
|
11
|
+
numbers=withendperiod,
|
|
12
|
+
headsepline=on,
|
|
13
|
+
footsepline=off,
|
|
14
|
+
abstract=on,
|
|
15
|
+
headheight=36pt,
|
|
16
|
+
footheight=48pt,
|
|
21
17
|
}
|
|
22
18
|
\RequirePackage[l2tabu, orthodox]{nag}
|
|
23
19
|
|
|
@@ -25,12 +21,12 @@
|
|
|
25
21
|
\setdefaultlanguage[variant=american]{english}
|
|
26
22
|
% Appendix prefix for scrartcl
|
|
27
23
|
\newcommand*{\appendixmore}{%
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
\renewcommand*{\sectionformat}{%
|
|
25
|
+
\appendixname~\thesection\autodot\enskip%
|
|
26
|
+
}%
|
|
27
|
+
\renewcommand*{\sectionmarkformat}{%
|
|
28
|
+
\appendixname~\thesection\autodot\enskip%
|
|
29
|
+
}%
|
|
34
30
|
}
|
|
35
31
|
|
|
36
32
|
\RequirePackage[doublespacing]{setspace}
|
|
@@ -59,24 +55,24 @@
|
|
|
59
55
|
|
|
60
56
|
% Fonts and math
|
|
61
57
|
\RequirePackage{fontspec}
|
|
62
|
-
\setmonofont[Scale=MatchLowercase,]{
|
|
63
|
-
\setsansfont{
|
|
64
|
-
\setmainfont{
|
|
58
|
+
\setmonofont[Scale=MatchLowercase,]{Roboto Mono}
|
|
59
|
+
\setsansfont{Roboto}
|
|
60
|
+
\setmainfont{STIXTwoText}
|
|
65
61
|
|
|
66
62
|
\RequirePackage[standard]{ntheorem}
|
|
67
63
|
\RequirePackage{mathtools}
|
|
68
64
|
\RequirePackage{unicode-math}
|
|
69
|
-
\setmathfont[math-style=ISO]
|
|
65
|
+
\setmathfont{STIXTwoMath}[math-style=ISO]
|
|
70
66
|
% Separate \mathscr from \mathcal
|
|
71
|
-
\setmathfont{
|
|
67
|
+
\setmathfont{STIXTwoMath}[range={scr,bfscr},StylisticSet=01]
|
|
72
68
|
|
|
73
69
|
\defaultfontfeatures[\rmfamily,\sffamily]{
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
Ligatures={TeX, Common},
|
|
71
|
+
Numbers={proportional, lining}
|
|
76
72
|
}
|
|
77
73
|
\RequirePackage[
|
|
78
|
-
|
|
79
|
-
|
|
74
|
+
activate={true,nocompatibility},
|
|
75
|
+
tracking=true,
|
|
80
76
|
]{microtype}
|
|
81
77
|
|
|
82
78
|
\RequirePackage{tabularray}
|
|
@@ -85,9 +81,9 @@
|
|
|
85
81
|
%% https://tex.stackexchange.com/questions/286733/change-content-font-in-tabular-environments
|
|
86
82
|
\makeatletter
|
|
87
83
|
\appto\@floatboxreset{%
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
\ifx\@captype\andy@table
|
|
85
|
+
\sffamily\addfontfeatures{Numbers={Monospaced, Lining},}
|
|
86
|
+
\fi
|
|
91
87
|
}
|
|
92
88
|
\def\andy@table{table}
|
|
93
89
|
\makeatother
|
|
@@ -109,7 +105,7 @@
|
|
|
109
105
|
%% Read KOMA-Script documentation
|
|
110
106
|
\setfootnoterule[0.4pt]{\linewidth}
|
|
111
107
|
\deffootnote{2.5em}{2.5em}{%
|
|
112
|
-
|
|
108
|
+
\makebox[2.5em][l]{\hspace{1ex}\thefootnotemark.}%
|
|
113
109
|
}
|
|
114
110
|
|
|
115
111
|
%% For highlighting text with a colored background, soul
|
|
@@ -119,7 +115,7 @@
|
|
|
119
115
|
%% Properly typset intervals, and avoid messages about unmatched parentheses
|
|
120
116
|
\RequirePackage{interval}
|
|
121
117
|
\intervalconfig{
|
|
122
|
-
|
|
118
|
+
soft open fences,
|
|
123
119
|
}
|
|
124
120
|
|
|
125
121
|
%%% custom commands, environments and symbols
|
|
@@ -133,7 +129,7 @@
|
|
|
133
129
|
\DeclarePairedDelimiter\set\{\}
|
|
134
130
|
%% http://mirrors.ctan.org/macros/latex/contrib/mathtools/mathtools.pdf, 27--28
|
|
135
131
|
\DeclarePairedDelimiterX\SetSuchThat[2]{\lbrace}{\rbrace}{%
|
|
136
|
-
|
|
132
|
+
#1 \, \delimsize\vert \, \mathopen{}#2
|
|
137
133
|
}
|
|
138
134
|
|
|
139
135
|
%% Sometimes, you just want to comment out several lies of text
|
|
@@ -148,14 +144,12 @@
|
|
|
148
144
|
\RequirePackage{hyperref}
|
|
149
145
|
\ProcessOptions\relax
|
|
150
146
|
\hypersetup{%
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
hidelinks,
|
|
154
|
-
pdfencoding=auto,
|
|
147
|
+
bookmarksnumbered=false,
|
|
148
|
+
hidelinks,
|
|
155
149
|
}
|
|
156
150
|
\RequirePackage[capitalize, noabbrev]{cleveref}
|
|
157
151
|
|
|
158
152
|
\AtBeginDocument{%
|
|
159
|
-
|
|
153
|
+
\SetBlockEnvironment{quoting}
|
|
160
154
|
}
|
|
161
155
|
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
\DocumentMetadata{pdfversion=1.7, lang=en-US, pdfstandard=A-3u}
|
|
1
2
|
\documentclass{mergeron}
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
\
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
%% Get column- and row-counts for tikz matrix
|
|
5
|
+
\newcount\tnr
|
|
6
|
+
\newcount\tnc
|
|
7
|
+
\makeatletter
|
|
8
|
+
\tikzset{record matrix dimensions/.style={execute at end matrix={
|
|
9
|
+
\global\tnc=\pgf@matrix@numberofcolumns
|
|
10
|
+
\global\tnr=\pgfmatrixcurrentrow
|
|
11
|
+
}}}
|
|
12
|
+
\makeatother
|
|
8
13
|
|
|
9
|
-
luatexbase.add_to_callback(
|
|
10
|
-
"luaotfload.patch_font", embedfull, "embedfull"
|
|
11
|
-
)
|
|
12
|
-
\end{luacode}
|
|
13
14
|
|
|
14
15
|
% Specify location for includegraphics files:
|
|
15
16
|
\graphicspath{{~/mergeron}}
|
|
@@ -32,6 +33,8 @@
|
|
|
32
33
|
%% Define colors for tables
|
|
33
34
|
\definecolor{table_bar_green}{HTML}{dfeadf}
|
|
34
35
|
|
|
36
|
+
\usepackage{enumitem}
|
|
37
|
+
|
|
35
38
|
%% BibLaTex/APA style citation
|
|
36
39
|
\usepackage[
|
|
37
40
|
sorting=nyt,
|
|
@@ -18,62 +18,78 @@
|
|
|
18
18
|
% https://tex.stackexchange.com/questions/167944/auto-word-wrapping-in-a-node-in-tikz
|
|
19
19
|
% https://tex.stackexchange.com/questions/132741/typewriter-in-tikz-node
|
|
20
20
|
\tikzset{
|
|
21
|
+
green_bar_filler/.code={%
|
|
22
|
+
\pgfmathtruncatemacro{\itest}{ifthenelse(%
|
|
23
|
+
\pgfmatrixcurrentcolumn==1,0,%
|
|
24
|
+
ifthenelse(iseven(\pgfmatrixcurrentrow),1,3))}
|
|
25
|
+
%\typeout{\the\pgfmatrixcurrentcolumn,\pgfmatrixcurrentrow->\itest}
|
|
26
|
+
\ifcase\itest
|
|
27
|
+
\tikzset{fill=OBSHDRFill}%
|
|
28
|
+
\or
|
|
29
|
+
\tikzset{fill=DataFill}%
|
|
30
|
+
\else
|
|
31
|
+
\tikzset{fill=white}%
|
|
32
|
+
\fi
|
|
33
|
+
},
|
|
21
34
|
% If you only have numbers, text depth = 0ex; if text, text depth = 0.25ex, (may need tweaking for alignment across cells)
|
|
22
35
|
anytext/.style = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
36
|
+
font = \sffamily\scriptsize\addfontfeatures{Numbers={Monospaced,Lining}},
|
|
37
|
+
align = center,
|
|
38
|
+
inner sep = 3pt,
|
|
39
|
+
text depth = 0pt,
|
|
40
|
+
},
|
|
28
41
|
hdrtext/.style = {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
42
|
+
anytext,
|
|
43
|
+
text = white,
|
|
44
|
+
fill = OBSHDRFill,
|
|
45
|
+
},
|
|
33
46
|
notetext/.style = {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
47
|
+
anytext,
|
|
48
|
+
font = \sffamily\tiny,
|
|
49
|
+
align = left,
|
|
50
|
+
},
|
|
38
51
|
anytable/.style = {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
52
|
+
matrix of nodes,
|
|
53
|
+
nodes in empty cells,
|
|
54
|
+
column sep = -1.0\pgflinewidth,
|
|
55
|
+
row sep = -1.0\pgflinewidth,
|
|
56
|
+
inner sep = -0.25\pgflinewidth,
|
|
57
|
+
outer sep = -0.25\pgflinewidth,
|
|
58
|
+
nodes = {anchor = center, minimum height = 12.5pt,}
|
|
59
|
+
},
|
|
47
60
|
datatable/.style = {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
draw = none,
|
|
56
|
-
fill = none,
|
|
57
|
-
},
|
|
58
|
-
every even row/.style = {
|
|
59
|
-
nodes = {fill = DataFill}
|
|
60
|
-
},
|
|
61
|
+
anytable,
|
|
62
|
+
nodes = {
|
|
63
|
+
anytext,
|
|
64
|
+
align = right,
|
|
65
|
+
draw = none,
|
|
66
|
+
fill = none,
|
|
67
|
+
green_bar_filler,
|
|
61
68
|
},
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
% every even row/.style = {
|
|
70
|
+
% nodes = {fill = DataFill}
|
|
71
|
+
% },
|
|
72
|
+
},
|
|
73
|
+
hdrtable/.style = {
|
|
74
|
+
anytable,
|
|
75
|
+
nodes = {
|
|
76
|
+
hdrtext,
|
|
77
|
+
draw = none,
|
|
78
|
+
fill = OBSHDRFill,
|
|
70
79
|
},
|
|
80
|
+
},
|
|
81
|
+
hrow/.style = {
|
|
82
|
+
hdrtable,
|
|
83
|
+
nodes = {text width = 40pt,},
|
|
84
|
+
},
|
|
71
85
|
hcol/.style = {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
86
|
+
hdrtable,
|
|
87
|
+
nodes = {text width = 60pt,},
|
|
88
|
+
},
|
|
75
89
|
}
|
|
76
90
|
% Define layers for later reference
|
|
77
91
|
% https://tex.stackexchange.com/questions/40840/put-a-node-behind-another-in-a-tikz-diagram
|
|
78
92
|
\pgfdeclarelayer{background}
|
|
79
93
|
\pgfsetlayers{background,main}
|
|
94
|
+
|
|
95
|
+
|
|
@@ -91,23 +91,27 @@ moe_tmpl = Template(R"""
|
|
|
91
91
|
|
|
92
92
|
# Define the LaTeX jinja environment
|
|
93
93
|
# http://eosrei.net/articles/2015/11/LaTeX-templates-python-and-jinja2-generate-pdfs
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
94
|
+
# The context manager does not point to a templates folder, so it doesn't work here
|
|
95
|
+
# So, we brute-force a solution
|
|
96
|
+
|
|
97
|
+
_tmpl_folder = re.search(
|
|
98
|
+
r"'(.*)'", str(resources.files(f"{_PKG_NAME}.data.jinja2_LaTeX_templates"))
|
|
99
|
+
)[0].strip("'")
|
|
100
|
+
|
|
101
|
+
LaTeX_jinja_env = Environment(
|
|
102
|
+
block_start_string=R"((*",
|
|
103
|
+
block_end_string="*))",
|
|
104
|
+
variable_start_string=R"\JINVAR{",
|
|
105
|
+
variable_end_string="}",
|
|
106
|
+
comment_start_string=R"((#", # r'#{',
|
|
107
|
+
comment_end_string=R"#))", # '}',
|
|
108
|
+
line_statement_prefix="##",
|
|
109
|
+
line_comment_prefix="%#",
|
|
110
|
+
trim_blocks=True,
|
|
111
|
+
lstrip_blocks=True,
|
|
112
|
+
autoescape=select_autoescape(disabled_extensions=("tex.jinja2",)),
|
|
113
|
+
loader=FileSystemLoader(_tmpl_folder),
|
|
114
|
+
)
|
|
111
115
|
|
|
112
116
|
# Place files related to rendering LaTeX in output data directory
|
|
113
117
|
if not (_out_path := DATA_DIR.joinpath(f"{_PKG_NAME}.cls")).is_file():
|
|
@@ -129,7 +133,7 @@ if not (_DOTTEX := DATA_DIR / Rf"{_PKG_NAME}_TikZTableSettings.tex").is_file():
|
|
|
129
133
|
shutil.copy2(_tex_path, _DOTTEX)
|
|
130
134
|
|
|
131
135
|
|
|
132
|
-
LTX_ARRAY_LINEEND =
|
|
136
|
+
LTX_ARRAY_LINEEND = "\\\\\n"
|
|
133
137
|
LaTeX_hrdcoldesc_format_str = "{}\n{}\n{}".format(
|
|
134
138
|
"".join((
|
|
135
139
|
R"\matrix[hcol, above=0pt of {}, nodes = {{",
|
|
@@ -173,15 +177,15 @@ ZONE_STRINGS = {
|
|
|
173
177
|
ZONE_DETAIL_STRINGS_HHI = {
|
|
174
178
|
0: Rf"HHI < {HHI_POST_ZONE_KNOTS[1]} pts.",
|
|
175
179
|
1: R"HHI ∈ [{}, {}) pts. and ".format(*HHI_POST_ZONE_KNOTS[1:3]),
|
|
176
|
-
2: Rf"HHI
|
|
180
|
+
2: Rf"HHI ⩾ {HHI_POST_ZONE_KNOTS[2]} pts. and ",
|
|
177
181
|
}
|
|
178
182
|
|
|
179
183
|
ZONE_DETAIL_STRINGS_DELTA = {
|
|
180
184
|
0: "",
|
|
181
185
|
1: Rf"ΔHHI < \text{{{HHI_DELTA_KNOTS[1]} pts.}}",
|
|
182
|
-
2: Rf"ΔHHI
|
|
186
|
+
2: Rf"ΔHHI ⩾ \text{{{HHI_DELTA_KNOTS[1]} pts.}}",
|
|
183
187
|
3: R"ΔHHI ∈ \text{{[{}, {}) pts.}}".format(*HHI_DELTA_KNOTS[1:3]),
|
|
184
|
-
4: Rf"ΔHHI
|
|
188
|
+
4: Rf"ΔHHI ⩾ \text{{{HHI_DELTA_KNOTS[2]} pts.}}",
|
|
185
189
|
}
|
|
186
190
|
|
|
187
191
|
ZONE_STRINGS_LATEX = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mergeron
|
|
3
|
-
Version: 2024.
|
|
3
|
+
Version: 2024.739123.1
|
|
4
4
|
Summary: Merger Policy Analysis using Python
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: merger policy analysis,merger guidelines,merger screening,policy presumptions,concentration standards,upward pricing pressure,GUPPI
|
|
@@ -29,10 +29,9 @@ Requires-Dist: matplotlib (>=3.8)
|
|
|
29
29
|
Requires-Dist: mpmath (>=1.3)
|
|
30
30
|
Requires-Dist: msgpack (>=1.0)
|
|
31
31
|
Requires-Dist: msgpack-numpy (>=0.4)
|
|
32
|
-
Requires-Dist: numpy (>=1.26,<2)
|
|
33
32
|
Requires-Dist: scipy (>=1.12)
|
|
34
33
|
Requires-Dist: sympy (>=1.12)
|
|
35
|
-
Requires-Dist: tables (>=3.
|
|
34
|
+
Requires-Dist: tables (>=3.10.1)
|
|
36
35
|
Requires-Dist: types-beautifulsoup4 (>=4.11.2)
|
|
37
36
|
Requires-Dist: urllib3 (>=2.2.2,<3.0.0)
|
|
38
37
|
Requires-Dist: xlrd (>=2.0.1,<3.0.0)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
mergeron/License.txt,sha256=7iX-y0EyjkbVJKJLS4ZKzuuE1wd0lryfsD_IytLG8lQ,1246
|
|
2
|
-
mergeron/__init__.py,sha256=
|
|
2
|
+
mergeron/__init__.py,sha256=C3z6_lP-KtUwiwM4QYmn-nv7sg6LZU7qtPpsL0dRx2c,1479
|
|
3
3
|
mergeron/core/__init__.py,sha256=KtjBlZOl7jwBCAUhrTJB9PdrN39YLYytNiSUSM_gRmA,62
|
|
4
4
|
mergeron/core/damodaran_margin_data.py,sha256=rMrgN1Qtw572a0ftY97OOj4otq8ldlLrcOi-bcE-org,8554
|
|
5
5
|
mergeron/core/ftc_merger_investigations_data.py,sha256=qGAjjXEyqwS1PKKxvJGsSkr0sfI--4oyLss9I1qCNR4,28247
|
|
@@ -14,18 +14,18 @@ mergeron/data/ftc_invdata.msgpack,sha256=WBFHgi7Ld4R-h2zL2Zc3TOIlKqVrbVFMH1LoI4-
|
|
|
14
14
|
mergeron/data/jinja2_LaTeX_templates/clrrate_cis_summary_table_template.tex.jinja2,sha256=ae4JiciU-pt8YAM8mRbsmt4W6ePuN1y1NPCWD95oXIo,4833
|
|
15
15
|
mergeron/data/jinja2_LaTeX_templates/ftcinvdata_byhhianddelta_table_template.tex.jinja2,sha256=ODEurkC0UHuWpjRUiQpeW85njSeUEUJYRdYg8gqoEq0,3642
|
|
16
16
|
mergeron/data/jinja2_LaTeX_templates/ftcinvdata_summary_table_template.tex.jinja2,sha256=h8_DEE0iskT9tnga5lZtxcoevN7pY4iKF-maErt4UU4,2906
|
|
17
|
-
mergeron/data/jinja2_LaTeX_templates/ftcinvdata_summarypaired_table_template.tex.jinja2,sha256=
|
|
18
|
-
mergeron/data/jinja2_LaTeX_templates/mergeron.cls,sha256=
|
|
19
|
-
mergeron/data/jinja2_LaTeX_templates/mergeron_table_collection_template.tex.jinja2,sha256=
|
|
20
|
-
mergeron/data/jinja2_LaTeX_templates/setup_tikz_tables.tex,sha256=
|
|
17
|
+
mergeron/data/jinja2_LaTeX_templates/ftcinvdata_summarypaired_table_template.tex.jinja2,sha256=4vlbxuxlP1MX0xrf6CWo6KvR9QTQffOR4wcgrEptSsI,5212
|
|
18
|
+
mergeron/data/jinja2_LaTeX_templates/mergeron.cls,sha256=aM2nx2GVQayZ8JPtD_OU4zjYlnddYx9k9WumN4WQc6g,4385
|
|
19
|
+
mergeron/data/jinja2_LaTeX_templates/mergeron_table_collection_template.tex.jinja2,sha256=FQ1uEwQv2QlGJS1DqlJwh0nLZp5h8dRjoYfWzbq6uMc,2546
|
|
20
|
+
mergeron/data/jinja2_LaTeX_templates/setup_tikz_tables.tex,sha256=OXQo1PYOl9kVlKYO97usdF9Q_PLqhskWx7fzeNGRdJI,3370
|
|
21
21
|
mergeron/demo/__init__.py,sha256=KtjBlZOl7jwBCAUhrTJB9PdrN39YLYytNiSUSM_gRmA,62
|
|
22
22
|
mergeron/demo/visualize_empirical_margin_distribution.py,sha256=v1xFJumBX2Ooye82kSSgly-_GpFVkYSDqBwM__rcmZY,2363
|
|
23
23
|
mergeron/gen/__init__.py,sha256=0rfcWpKDhYE_jNsw6xKTGFJqgNtfJ-5JFxHS89CIEuI,16575
|
|
24
24
|
mergeron/gen/data_generation.py,sha256=ZwcVoAfqGTwVBL7PRil_A9kZU8DQK0eCHtsBFA1QElA,16773
|
|
25
25
|
mergeron/gen/data_generation_functions.py,sha256=bP3E0IPXINRc8s0dUxS_Wqo1byVzheZLX811A17WNbU,28571
|
|
26
|
-
mergeron/gen/enforcement_stats.py,sha256=
|
|
26
|
+
mergeron/gen/enforcement_stats.py,sha256=UBoQLYAgaPlCXpBby5_6HwmA25wITRot_alld7g46Ag,27445
|
|
27
27
|
mergeron/gen/upp_tests.py,sha256=yzEwWK1bVfjtBYMwXnL5uEWWRiR0_9y0wmjNMB-O3rU,12589
|
|
28
28
|
mergeron/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
29
|
-
mergeron-2024.
|
|
30
|
-
mergeron-2024.
|
|
31
|
-
mergeron-2024.
|
|
29
|
+
mergeron-2024.739123.1.dist-info/METADATA,sha256=XgT1vFjxTyzfr8S_GZZwUZ6Uj8xH8aemIyAiI8R3gjU,13976
|
|
30
|
+
mergeron-2024.739123.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
31
|
+
mergeron-2024.739123.1.dist-info/RECORD,,
|
|
File without changes
|