3

enter image description here

\documentclass{ctexart}
\setCJKmainfont{宋体} 
\usepackage{amsmath,mathptmx}

\begin{document}
$
\text{《内经》学术体系}
\begin{cases}
\text{医学理论}
        \begin{cases}
                \text{藏象}
                    \begin{cases}
                        \text{脏腑}\\
                        \text{经络}\\
                        \text{精气神}
                    \end{cases}\\
                \text{疾病}
                    \begin{cases}
                        \text{病机}
                            \begin{cases}
                                \text{病因}\\
                                \text{发病}\\
                                \text{病理}\\
                                \text{传变}
                            \end{cases}\\
                        \text{病症}
                    \end{cases}
        \end{cases}\\
\text{医学基础}
        \begin{cases}
                \text{哲学}\\
                \text{天文历法}\\
                \text{地理学}\\
                \text{气象学}\\
                \text{数学}\\
                \text{社会学}
        \end{cases}\\
\end{cases}
$

\end{document} 

enter image description here

沙漠之子
  • 489
  • 4
  • 7

2 Answers2

4

I've made a start, using TikZ, though if I can be shown how this might be done more efficiently I would be grateful. Note that I am using XeLaTeX in TeXShop on a Mac. This is not the complete chart, and I make apologies if I have got any of the Chinese characters wrong. This is meant as a starting point.

    % !TEX encoding = UTF-8 Unicode
% !TEX TS-program = XeLaTeX

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.pathreplacing,calc}
\usepackage{fontspec}
\setmainfont{Adobe Song Std L}

\begin{document}

\begin{tikzpicture}[node distance=0.5em]
\node (main) at (0,0) {《内经》学术体系};
    \node (t1) at (1in,5\baselineskip) {医学理论};
    \node (t2) at (1in,-5\baselineskip) {医学基础};
\draw[decorate,decoration={brace,mirror}] (t1.west) -- (t2.west);
    \node [right =of t1,yshift=7\baselineskip] (st1) {藏象};
    \node [right =of t1,yshift=2\baselineskip] (st2) {疾病};
    \node [right =of t1,yshift=-1.5\baselineskip] (st3) {诊法};
    \node [right =of t1,yshift=-4\baselineskip] (st4) {论治};
    \node [right =of t1,yshift=-6.5\baselineskip] (st5) {养生};
\draw[decorate,decoration={brace,mirror,aspect=0.525}] (st1.west) -- (st5.west);
    \node [right =of st1,yshift=1.5\baselineskip] (sst1) {脏腑};
    \node [right =of st1] (sst2) {经络};
    \node [right =of st1,yshift=-1.5\baselineskip] (sst3) {精气神};
    \node [right =of st2, yshift =1\baselineskip] (sst4){病机};
    \node [right =of st2, yshift =-2.5\baselineskip] (sst5){病证};
\draw[decorate,decoration={brace,mirror}] (sst1.west) -- (sst3.west);
    \node [right =of sst4, yshift=1.5\baselineskip] (ssst1) {病因};
    \node [right =of sst4, yshift=0.5\baselineskip] (ssst2) {发病};
    \node [right =of sst4, yshift=-0.5\baselineskip] (ssst3) {病理};
    \node [right =of sst4, yshift=-1.5\baselineskip] (ssst4) {传变};
\draw[decorate,decoration={brace,mirror}] (ssst1.west) -- (ssst4.west);
\draw[decorate,decoration={brace,mirror}] (sst4.west|-ssst1) -- (sst5.west);
\end{tikzpicture}

Typeset table

WARNING It does take a bit of fiddling to get this to come out the way you want it to.

Some background and explanation:

This problem shows off two powerful TikZ tools:

  1. Relative placement of nodes. The `right = of * relieves gentle user of having to calculate distances and fiddle with dimensions. (Chapter 13 of the TikZ documention.)

  2. Using the names of the nodes is also liberating in that you do not have to note precisely where a node is -- you just refer to its name. (Chapter 16 of the TikZ documentation.) The interesting part of this was in the fourth column of characters, the second group from the top: The bracket extends above the top pair of glyphs. This was accomplished with:

\draw[decorate,decoration={brace,mirror}] (sst4.west|-ssst1) -- (sst5.west);

which starts at sst5.west and extends to the x-coordinate off sst4.west but ends at the y-coordinate of ssst1.

I approached this by treating the original as columns of characters. Each vertical group could be broken up into smaller groups, and have brackets drawn next to them.

If I can find the time, I may finish this. I think all the hard work is done...

sgmoye
  • 8,586
2

Finally, I use the schemata package to solve the problem. Though, not too perfect.

% -*- coding: utf-8 -*-
%!TEX program = xelatex
\documentclass{article}
\usepackage{fontspec}
\setmainfont{宋体}
%-----------------------------------------
\usepackage{schemata,xpatch}
\xpatchcmd{\schema}
  {1.44265ex}{-1ex}
  {}{}
\newcommand\SC[2]{\schema{\schemabox{#1}}{\schemabox{#2}}}
\newcommand\SCh[4]{\Schema{#1}{#2}{\schemabox{#3}}{\schemabox{#4}}}
%-----------------------------------------

\begin{document}
{
\small\centerline{《内经》病因系统表}\smallskip
\label{fig:《内经》病因系统表}
\renewcommand{\baselinestretch}{1}

\hspace{.1\textwidth}%左侧空白
\SCh{-5.7ex}{6ex}{致病因素}{\smallskip
        \SC{自然环境}{
            天气:风、雨、寒、暑、湿、燥、雾、露等\\
            天象:天宿失度,日月薄蚀,月郭圆缺\\
            地理:地域,地势
        }\\
        \SC{社会环境}{
            政治:政体,战争,职位\\
            经济:经济制度,贫富差异\\
            道徳:嗜欲无穷(物欲、权欲、色欲)\\
            心理:情志异常\\
            信仰:崇拜,迷信\\
            民俗:地区风气,生活习俗\\
            饮食:嗜食,偏食,饱食,冷食\\
            劳伤:体劳,房劳\\
            中毒:毒物(包括药物),醉酒}
}\hfill }


{
\label{fig:《内经》学术体系基本框架结构图}
\renewcommand{\baselinestretch}{1}
\small
\hspace{.1\textwidth}%左侧距离
\SCh{9.5ex}{11.3ex}{《内经》学术体系}{
        \SCh{0.1ex}{13.7ex}{医学理论}{\smallskip
            \SC{藏象}{脏腑\\经络\\精气神}\\\smallskip
            \SCh{2.8ex}{2.9ex}{疾病}{
                \SC{病机}{病因\\发病\\病理\\传变}\\
                病症}\\\smallskip
            \SC{诊法}{\smallskip 诊病方法\\断病法则}\\\smallskip
            \SC{论治}{治则\\治法\\疗法\\测试}\\\smallskip
            \SC{养生}{\smallskip 摄生\\康复}
        }\\
        \SC{医学基础}{
            哲学\\
            天文历法\\
            地理学\\
            气象学\\
            数学\\
            社会学}
}\hfill }


\end{document} 

enter image description here

沙漠之子
  • 489
  • 4
  • 7