在接下来的几周里,我需要制作几份这样的文件一。这些讲义将分发给学生,涵盖课程的主要主题。
目前,我正在使用parbox
(用于单行)或minipage
(用于多行)结合tabular
环境来划分文档,以便更好地对齐。我还使用它parkskip
来定义每个框之间的垂直空间:
\documentclass[10pt,a4paper,landscape]{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=0.4cm]{geometry}
\usepackage{inconsolata}
\usepackage[parfill]{parskip}
\usepackage[cmyk]{xcolor}
\usepackage[usestackEOL]{stackengine}
\definecolor{red}{RGB}{153,0,0}
\definecolor{blue}{RGB}{51,102,153}
\pagestyle{empty}
\setlength{\parskip}{3mm}
\begin{document}
\parbox[t]{200mm}{\huge{\textbf{Resumo Aula 1 - Curso MATLAB}}}
\parbox[t]{200mm}{\huge{$\bullet$ Concatenação e criação de matrizes - Operador \texttt{[]} e \texttt{:}}}
%\fbox
{
\begin{minipage}[t]{140mm}
\Large
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ l l l }
\texttt{a = [1,2,3,4]} & \texttt{a = [1 2 3 4]} & Vetor Coluna \\
\texttt{a = [1,2,3,4]} & & Vetor Linha \\
\texttt{c = [a,a]} & \texttt{c = [a a]} & Concatenização Vertical \\
\texttt{C = [a;a]} & & Concatenização Horizontal
\end{tabular}
\end{minipage}
}
%\fbox
{
\begin{minipage}[c]{100mm}
\Large
\renewcommand{\arraystretch}{1}
\begin{tabular}{ l l }
\texttt{zeros} & Matriz de zeros \\
\texttt{ones} & Matriz de números 1 \\
\texttt{eye} & Matriz identidade \\
\texttt{rand} & Matriz de números aleatórios \\
\texttt{zeros(3,3)} & Matriz 3x3\\
\texttt{zeros(1,3)} & Matriz 3x1
\end{tabular}
\end{minipage}
}
\parbox[b]{65mm}{\Large{\texttt{inicio:incremento:fim}}}
\parbox[b]{60mm}{\Large{\texttt{1:2:10}}$\rightarrow$ \texttt{[1 3 5 7 9]}}
\parbox[b]{40mm}{\Large{\texttt{1:4}}$\rightarrow$ \texttt{[1 2 3 4]}}
\parbox[c]{40mm}{Se o incremento não for especificado é considerado um incremento de 1}
\parbox[t]{200mm}{\huge{$\bullet$ Indexação - Operadores \texttt{()} e \texttt{:}}}
%\fbox
{
\begin{minipage}[t]{200mm}
\Large
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ l l }
\texttt{A(indice)} & Procura através das colunas \\
\texttt{A(indiceLinha, indiceColuna)} & Intersecção do vetor \texttt{indiceLinha} e \texttt{indiceColuna} \\
\texttt{end} & Seleciona o último elemento de uma dimensão \\
\texttt{:} & Seleciona toda uma dimensão
\end{tabular}
\end{minipage}
}
%\fbox
{
\begin{minipage}[c]{130mm}
\Large
\includegraphics{exemploIndexacao}
\texttt{\textcolor{red}{indiceLinha} = [1 3]}
\texttt{\textcolor{blue}{indiceColuna} = [2 3]}
\texttt{A(\textcolor{red}{indiceLinha}, \textcolor{blue}{indiceColuna})}
\end{minipage}
}
%\fbox
{
\begin{minipage}[c]{135mm}
\Large
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ l l }
\texttt{A(:,2)} & Segunda coluna completa \\
\texttt{A(:)} & Todos os elementos de A em um vetor coluna \\
\texttt{A([1 3],:)} & Primeira e terceira linha completa \\
\texttt{A(1,end)} & Primeira e última coluna
\end{tabular}
\end{minipage}
}
\scriptsize\raggedleft\vfill{\textbf{Copyright \copyright\ 2016 Pedro Dreyer ([email protected])}}
\end{document}
你们觉得怎么样?有没有更正确/更优雅的方式来存档相同的结果?
其他一些问题:
1-我可以让parbox
宽度和里面的文本大小完全一致吗?
2-为什么我会收到overfull \hbox
警告? 的宽度minipages
足以容纳其内容。
3- 对该文件的整体设计有什么意见/评论吗?
答案1
正如您所说,您必须制作一些这样的文件,因此这里有一些建议:
- 避免横向显示。横向显示会使文本难以理解。
- 让 LaTeX 指导您完成页面的节奏和排版。使用
\section*, \subsection*
等来定义标题级别。 - 为经常使用的表格编写宏,并将样式元素移至表格规范。为此添加矩阵包。
- 努力使文档中的标记量最少。
- 不要试图在四个(第一个表)的空间中放入六行。垂直对齐并不容易。
- 拥抱
UTF-8
LuaLaTeX。
这是该文档第一部分的 MWE。
\documentclass[10pt,a4paper,draft]{article}
\usepackage{fontspec}
\setmainfont{arial}
\usepackage{graphicx}
\usepackage[left=0.8cm,right=0cm,top=1cm,bottom=0.4cm]{geometry}
\usepackage[parfill]{parskip}
\usepackage[cmyk]{xcolor}
\usepackage[usestackEOL]{stackengine}
\usepackage{array,longtable}
\usepackage{multicol}
\definecolor{red}{RGB}{153,0,0}
\definecolor{blue}{RGB}{51,102,153}
\pagestyle{empty}
\setlength{\parskip}{3mm}
\newenvironment{matlab}{%
\begin{tabular}[t]{>{\bfseries\ttfamily} l >{\ttfamily} l >{\itshape}l }%
}{\end{tabular}}
\newcommand{\matcmd}[2]{
\bgroup\ttfamily
#1$\rightarrow$ #2\egroup
}
\begin{document}
\section*{Resumo Aula 1 - Curso MATLAB}
\subsection*{Concatenação e criação de matrizes - Operador \texttt{[]} e \texttt{:}}
\begin{matlab}
zeros & Matriz de zeros &\\
ones & Matriz de números 1 & \\
eye & Matriz identidade & \\
rand & Matriz de números aleatórios & \\
zeros(3,3) & Matriz 3x3 &\\
zeros(1,3) & Matriz 3x1 &
\end{matlab}
\begin{matlab}
a = [1,2,3,4] & a = [1 2 3 4] & Vetor Coluna \\
a = [1,2,3,4] & & Vetor Linha \\
c = [a,a] & c = [a a] & Concatenização Vertical \\
C = [a;a] & & Concatenização Horizontal
\end{matlab}
\matcmd{inicio:incremento:fim}{}
\matcmd{1:2:10}{[1 3 5 7 9]}
Se o incremento não for especificado é considerado um incremento de 1
\matcmd{1:4}{[1 2 3 4]}
\subsection*{Indexação - Operadores \texttt{()} e \texttt{:}}
\begin{matlab}
A(indice) & Procura através das colunas &\\
A(indiceLinha, indiceColuna) & Intersecção do vetor \texttt{indiceLinha} e \texttt{indiceColuna} & \\
end& Seleciona o último elemento de uma dimensão &\\
: & Seleciona toda uma dimensão
\end{matlab}
\end{document}