Latex学习笔记(数据库代数关系式)

数据库作业要写关系代数式,但是又不想用word的公式编辑器,所以开始学习latex。在这里整理一下遇到的相关问题以及常用的一些知识(结尾附有样例代码和结果图)。

首先是编辑器,可以使用网上的在线编辑器,但是复杂公式的编辑可能不太友好,所以还是要装一个本地的编辑器。附一个比较详细的来自知乎的帖子:有哪些好的LaTex编辑器 。在windows平台下测试了两款,TexStudio和WinEdt。TexStudio集编辑和预览于一身,同时可以补全代码,用起来比较方便。但是这个程序需要额外安装需要的库,对新手不太友好。因此个人更推荐直接安装集成了WinEdt的CTeX,基础版只有二百多M,安装完即可使用,适用于新手学习(当然,功能也是很齐全的)。

具体的基础操作,这里就不做详细介绍了,附一篇个人认为很好的贴子,即使是小白看完了也可以很快的掌握基本操作,来自CSDN:一篇实用的Latex入门教程 。把里面的样例看一遍对于新手来说很有益处(对于主要学习数学公式的来说着重看第七部分的样例代码)

既然是编辑公式,那么肯定要用到很多数学符号。latex对于数学符号的支持还是比较友好和全面的。这里附上一份整理好的数学符号表,基本上可以查到所需的所有数学符号:常用数学符号的 LaTeX 表示方法  (虽说这个页面是用一堆图片排版的,但是用起来确实很方便)。如果是使用WinEdt的话,可以直接调用符号表(图示第五个图标),点击所需的符号就可以直接完成符号编辑:


一些需要注意的小细节:

(1)在latex里面,空格是不被识别的,除\之后的空格代表1/3m个空格以外其他的空格都是不识别的。当然,不同的变量名之间需要用空格隔开。单个回车的话也是不会识别的,只是用于排版。如果是有整个一行空行的话就代表显示内容里面是一个换行,所以不要随意打回车,会涉及到排版问题。

(2)字体调节。可以直接设置宏包,也可以具体设定。例如{\tiny test1},显示结果为小字号的“test1”(当然,也可以直接设置字号)。下面为不要求具体字号的情况下便捷设定字体大小的方法,大小依次增大:

\tiny
\scriptsize
\footnotesize
\small
\normalsize
\large
\Large
\LARGE
\huge
\Huge

(3)上下标。在latex里面,使用_和^代表下标和上标。如果上标或下标内容比较多导致字体大小不对或需要层级的时候,可以进行嵌套,例如:

\prod _{_{test2} \land _{test3} }

当然,也可以直接调整字号,怎么习惯怎么来。

(4)括号问题。在安利latex的路上被嘲讽说“你肯定没有括号强迫症”,然而latex的括号调整个人认为远比word要方便。括号不算数学符号,所以如果打'('的话出现的是一个正常大小的括号。有时候括号里面的内容很多,需要调大括号才能让公式好看,这个也不是什么问题,只需要使用left和right即可:

\left( {内容} \right)

这样括号会自动调整大小,把内容里面的东西全部包含进去。

最后附上本次作业的latex代码作为样例:

\documentclass{article}
   \usepackage{amsmath}
   \usepackage{amssymb}
   \usepackage{CTEX}
   \usepackage{geometry}
   \geometry{a4paper,scale=0.8}
   \author{JuneWindy}
   \title{\textbf{Datebasehomework \ 2}}
\begin{document}
   \maketitle
   \section{找出所有顾客、代理商和商品都在同一个城市的三元组(cid,aid,pid)}
   $\prod_{Cid,Aid,Pid} (Customers \bowtie Agents \bowtie products)$
   \section{找出所有顾客、代理商和商品两两不在同一个城市的三元组(cid,aid,pid)}
   $\prod_{Cid,Aid,Pid}
   \left(
         \sigma
         _{\tiny
               \begin{aligned}
               &_{Customers.City<>Agents.City} \land _{Agents.City<>products.City} \\
               &\land _{Customers.City<>products.City}
               \end{aligned}
         }
         (Agents\times Customers \times products)
   \right)$
   \section{取出至少被一个在杭州的顾客通过位于上海的代理商定购的商品的名字。列出所有在同一个城市的代理商的aid对}
    \subsection{第一问}
    $\prod_{pname}
    \left(
        \sigma _{\tiny
            \begin{aligned}
            &_{Customers.City=hangzhou} \\
            &\land _{Agents.City=shanghai}
            \end{aligned}
        }
        (Customser \times Agents \times products)
        \bowtie \ \prod_{Cid,Aid,Pid}(orders)
    \right)$
    \subsection{第二问}
    R=Agents \qquad \qquad S=Agents

    $\prod_{R.Aid,S,Aid}
    \left(
        \sigma _{\tiny _{R.Aid<>S.Aid} \land _{R.City<>S.City}}
        (R \times S)
    \right)$
   \section{取出销售过所有曾被顾客c002定购过的商品的代理商的名字}
   $\prod_{aname}
   \left(
        \left(
            \prod_{Aid,Pid}(Orders)\div \prod_{Pid}(\sigma_{Cid=c002}(Orders))
        \right)
        \bowtie Agents
   \right)$
  \section{取出所有的三元组(cid,aid,pid),要求对应的顾客,代理商和商品中至少有两者是位于同一座城市}
    $\prod_{Cid,Aid,Pid}
    \left(
        \sigma
         _{\tiny
               \begin{aligned}
               &_{Customers.City=Agents.City} \lor _{Agents.City=products.City} \\
               &\lor _{Customers.City=products.City}
               \end{aligned}
         }
         (Agents\times Customers \times products)
    \right)$
  \section{取出接受过上海的顾客一笔总额超过¥500的订单的代理商的aid值}
  $\prod_{Aid}
  \left(
    \sigma_{_{Qty \times price > 500}}(Orders) \bowtie
    \sigma_{_{City=shanghai}} (Customers)
  \right)$
  \section{取出只从一家代理商处定购过商品的顾客的cid值}
  OY=Orders

  $\prod_{Cid}(Orders) \ - \
  \prod_{Orders.City}
  \left(
    \sigma_{_{Orders.Aid<>OY.Aid} \land {Orders.Cid=OY.Cid}}(Orders \times OY)
  \right)$

\end{document}

附上部分结果图(一张截不下来...):


  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值