Странные проблемы с выравниванием в таблице списка курсов

Странные проблемы с выравниванием в таблице списка курсов

Я пытаюсь создать таблицу, содержащую сведения обо всех моих курсовых работах. Я написал следующий код. В нем есть несколько проблем:

  1. Почему при компиляции первая страница оказывается пустой (при этом таблица находится на второй странице)?
  2. Таблица, похоже, оставляет много места на левом поле страницы, которое можно было бы использовать для более широкого четвертого столбца, но я не могу использовать это пространство.
  3. Таблица проходит по номеру страницы внизу второй страницы, и ничего не отображается после того, что отображается на странице 2. У меня есть несколько других курсов, и я хотел бы, чтобы эта таблица охватывала примерно 3 страницы. Как это сделать?

Примечание: я сделал второй столбец p-столбцом, поскольку настоящие имена некоторых преподавателей требуют двух строк.

Вот код:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{booktabs}

\begin{document}
\begin{tabular}{p{2.5cm}p{2cm}lp{6cm}} 
\toprule[2pt] 
Name of Course & Instructor & Book(s) Referred & Brief List of Topics Covered \\ 
\hline
\\[\defaultaddspace]

Algebra I & ABC & Herstein; M. Artin & 
\parbox{6cm}{Basic Set Theory; Group Theory\\(upto Sylow theorems);\\ Introduction to Ring Theory} \\ 
\\[\defaultaddspace]

Algebra II & DEF & Hoffman and Kunze & 
\parbox{6cm}{Linear Algebra \\(upto Spectral theorems)} \\ 
\\[\defaultaddspace]

Algebra III & GHI & S. Lang & 
\parbox{6cm}{Ring and Module Theory\\(covering Hilbert basis theorem and structure theorem for finitely generated abelian groups)}\\
\\[\defaultaddspace]

Algebra IV & JKL & S. Lang & 
\parbox{6cm}{Introduction to Field \\ and Galois Theory}\\
\\[\defaultaddspace]

Analysis I &  MNO  & T. Apostol & 
\parbox{6cm}{Real numbers; Sequences and series;\\ Calculus of a single variable \\ (upto Taylor's Theorem)
} \\ 
\\[\defaultaddspace]

Analysis II &  PQR  & T. Apostol & 
\parbox{6cm}{Riemann integral; Introduction to \\ Calculus of several variables; \\ Metric spaces and elementary \\ topological notions on it} \\ 
\\[\defaultaddspace]

Analysis III &  \parbox{2cm}{STU}  & S. Dineen & 
\parbox{6cm}{\textbf{Vector Calculus}: multiple integrals, \\ Jacobian formula, line and surface \\ integrals, Green's, Stokes' and Gauss' (Divergence) theorems; \\ Sequences of functions; Weierstrass \\ approximation theorem} \\ 
\\[\defaultaddspace]

Analysis IV &  VWX  & Rudin & 
\parbox{6cm}{\textbf{Introduction to Function Spaces}:\\ compact metric spaces,\\ C([a,b]) as a complete metric space, \\ Banach's contraction principle, \\ Stone-Weierstrass and Arzela-Ascoli theorems, Fourier series } \\ 
\\[\defaultaddspace]

Probability Theory I &  YZ  & Chung; Feller & 
\parbox{6cm}{Combinatorial probability and urn models; Conditional probability; \\ Random variables; Expectation; \\ Moment generating functions;\\ Standard distributions(Binomial etc.); \\ Joint and conditional distributions; \\ Weak law of large numbers} \\ 
\\[\defaultaddspace]

Probability Theory II &  YZ  & Feller & 
\parbox{6cm}{Joint distributions; \\Transformation of variables\\(assuming Jacobian formula);\\ Distributions for sums, maxima/minima, order statistics, etc.; Standard multivariate and sampling distributions; Conditional expectation; Convergence of random variables} \\ 
\\[\defaultaddspace]

\bottomrule[2pt]

\end{tabular}

\end{document}

решение1

Реальная проблема в том, что для таблицы недостаточно места на странице.

Вот что я предлагаю:

  1. Используйте longtableиз того же пакета вместо , tabularесли вы хотите, чтобы таблица была разделена на страницы.

  2. В этом случае таблица может остаться на одной странице. Вы можете использовать пакет geometryи уменьшить поля страницы только для той страницы, где находится таблица, с помощью команды

    \newgeometry{margin=2cm}
    

    и восстановить нормальную раскладку позже, выполнив команду

    \restoregeometry
    
  3. Уменьшить длину \defaultaddspaceдо1pt

    \setlength{\defaultaddspace}{1pt}
    
  4. Нет необходимости использовать \parboxes для центрирования содержимого ячеек. Вы можете загрузить arrayпакет и использовать mвместо p. Вы также можете объявить новый тип столбцаM

    \newcolumntype{M}[1]{>{\raggedright\arraybackslash}m{#1}}
    

    Вы также можете использовать его \newlineдля создания переносов строк внутри ячеек.

Полный пример:

\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsthm,array}
\usepackage{booktabs}

\usepackage{array,longtable}
\usepackage{lipsum} %only for the example

\newcolumntype{M}[1]{>{\raggedright\arraybackslash}m{#1}}
\setlength{\defaultaddspace}{1pt}

\begin{document}
\lipsum[1-5]

\newpage
\newgeometry{margin=2cm}
\begin{longtable}{p{2.5cm}p{2cm}lM{6cm}}
\toprule[2pt]
Name of Course & Instructor & Book(s) Referred & Brief List of Topics Covered \\
\hline
\\[\defaultaddspace]

Algebra I & ABC & Herstein; M. Artin &
Basic Set Theory; Group Theory\newline(upto Sylow theorems);\newline Introduction to Ring Theory \\
\\[\defaultaddspace]

Algebra II & DEF & Hoffman and Kunze &
Linear Algebra \newline(upto Spectral theorems) \\
\\[\defaultaddspace]

Algebra III & GHI & S. Lang &
Ring and Module Theory\newline(covering Hilbert basis theorem and structure theorem for finitely generated abelian groups) \\
\\[\defaultaddspace]

Algebra IV & JKL & S. Lang &
Introduction to Field \newline and Galois Theory\\
\\[\defaultaddspace]

Analysis I &  MNO  & T. Apostol &
Real numbers; Sequences and series;\newline Calculus of a single variable \newline (upto Taylor's Theorem) \\
\\[\defaultaddspace]

Analysis II &  PQR  & T. Apostol &
Riemann integral; Introduction to \newline Calculus of several variables; \newline Metric spaces and elementary \newline topological notions on it \\
\\[\defaultaddspace]

Analysis III &  \parbox{2cm}{STU}  & S. Dineen &
\textbf{Vector Calculus}: multiple integrals, \newline Jacobian formula, line and surface \newline integrals, Green's, Stokes' and Gauss' (Divergence) theorems; \newline Sequences of functions; Weierstrass \newline approximation theorem \\
\\[\defaultaddspace]

Analysis IV &  VWX  & Rudin &
\textbf{Introduction to Function Spaces}:\newline compact metric spaces,\newline C([a,b]) as a complete metric space, \newline Banach's contraction principle, \newline Stone-Weierstrass and Arzela-Ascoli theorems, Fourier series \\
\\[\defaultaddspace]

Probability Theory I &  YZ  & Chung; Feller &
Combinatorial probability and urn models; Conditional probability; \newline Random variables; Expectation; \newline Moment generating functions;\newline Standard distributions(Binomial etc.); \newline Joint and conditional distributions; \newline Weak law of large numbers \\
\\[\defaultaddspace]

Probability Theory II &  YZ  & Feller &
Joint distributions; \newline Transformation of variables\newline(assuming Jacobian formula);\newline Distributions for sums, maxima/minima, order statistics, etc.; Standard multivariate and sampling distributions; Conditional expectation; Convergence of random variables \\
\\[\defaultaddspace]

\bottomrule[2pt]

\end{longtable}

\newpage
\restoregeometry
\lipsum[1-5]

\end{document} 

Выход:

введите описание изображения здесь


РЕДАКТИРОВАТЬ

Как замечает egreg в своем комментарии, вероятно, таблица будет выглядеть лучше, если использовать обычный pстолбец без необходимости в дополнительном \\before \\[\defaultaddspace].

Вот еще один вариант (выберите тот, который вам больше нравится):

\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsthm,array}
\usepackage{booktabs}

\usepackage{array,longtable}
\usepackage{lipsum} %only for the example

\begin{document}
\lipsum[1-5]

\newpage
\newgeometry{margin=3cm}
\begin{longtable}{p{2.5cm}p{2cm}lp{6cm}}
\toprule[2pt]
Name of Course & Instructor & Book(s) Referred & Brief List of Topics Covered \\[\defaultaddspace]
\hline
\\

Algebra I & ABC & Herstein; M. Artin &
Basic Set Theory; Group Theory\newline(upto Sylow theorems);\newline Introduction to Ring Theory \\[\defaultaddspace]

Algebra II & DEF & Hoffman and Kunze &
Linear Algebra \newline(upto Spectral theorems) \\[\defaultaddspace]

Algebra III & GHI & S. Lang &
Ring and Module Theory\newline(covering Hilbert basis theorem and structure theorem for finitely generated abelian groups) \\[\defaultaddspace]

Algebra IV & JKL & S. Lang &
Introduction to Field \newline and Galois Theory \\[\defaultaddspace]

Analysis I &  MNO  & T. Apostol &
Real numbers; Sequences and series;\newline Calculus of a single variable \newline (upto Taylor's Theorem) \\[\defaultaddspace]

Analysis II &  PQR  & T. Apostol &
Riemann integral; Introduction to \newline Calculus of several variables; \newline Metric spaces and elementary \newline topological notions on it \\[\defaultaddspace]

Analysis III &  \parbox{2cm}{STU}  & S. Dineen &
\textbf{Vector Calculus}: multiple integrals, \newline Jacobian formula, line and surface \newline integrals, Green's, Stokes' and Gauss' (Divergence) theorems; \newline Sequences of functions; Weierstrass \newline approximation theorem \\[\defaultaddspace]

Analysis IV &  VWX  & Rudin &
\textbf{Introduction to Function Spaces}:\newline compact metric spaces,\newline C([a,b]) as a complete metric space, \newline Banach's contraction principle, \newline Stone-Weierstrass and Arzela-Ascoli theorems, Fourier series \\[\defaultaddspace]

Probability Theory I &  YZ  & Chung; Feller &
Combinatorial probability and urn models; Conditional probability; \newline Random variables; Expectation; \newline Moment generating functions;\newline Standard distributions(Binomial etc.); \newline Joint and conditional distributions; \newline Weak law of large numbers \\[\defaultaddspace]

Probability Theory II &  YZ  & Feller &
Joint distributions; \newline Transformation of variables\newline(assuming Jacobian formula);\newline Distributions for sums, maxima/minima, order statistics, etc.; Standard multivariate and sampling distributions; Conditional expectation; Convergence of random variables \\[\defaultaddspace]

\bottomrule[2pt]

\end{longtable}

\newpage
\restoregeometry
\lipsum[1-5]

\end{document} 

введите описание изображения здесь

решение2

Я бы посоветовал вам сделать с таблицей следующее, предполагая, что она умещается на одной странице:

  • Используйте tabularxсреду вместо tabularсреды, установите ее ширину на \textwidth, а для конечного столбца используйте Xтип столбца. Это установит ширину конечного столбца на ( \textwidthминус ширина трех других столбцов).

  • Используйте набор текста в режиме raggedright вместо полного выравнивания в последнем столбце; загрузите пакет, ragged2eчтобы разрешить перенос слов, набранных в режиме raggedright.

  • Избавьтесь от различных \parboxоберток и используйте \newlineоператоры для создания переносов строк в столбце 4. (Спасибо, @egreg!)

  • Замените множество \\ \\[\defaultaddspace]инструкций на \\[\defaultaddspace]. Если вам действительно нужно больше вертикального пробела, чем предусмотрено \defaultaddspace, просто увеличьте значение этого параметра соответствующим образом. В примере ниже я использую 2.5\defaultaddspaceдля предоставления большего вертикального пробела после групп курсов алгебры и анализа.

Если предположить, что поля 1inвезде одинаковы, то получится следующий вид:

введите описание изображения здесь

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath,amsthm,booktabs}
\usepackage{tabularx,ragged2e}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}

\begin{document}
\noindent
\begin{tabularx}{\textwidth}{@{} l p{1.75cm} l Y @{}} 
\toprule[2pt] 
Name of Course & Instructor & Book(s) Referred & Brief List of Topics Covered \\ 
\midrule

Algebra I & ABC & Herstein; M. Artin & 
Basic Set Theory; Group Theory\newline
(upto Sylow theorems);\newline
Introduction to Ring Theory \\[\defaultaddspace]

Algebra II & DEF & Hoffman and Kunze & 
Linear Algebra \newline
(upto Spectral theorems) \\[\defaultaddspace]

Algebra III & GHI & S. Lang & 
Ring and Module Theory \newline
(covering Hilbert basis theorem and structure theorem for finitely generated 
abelian groups)\\[\defaultaddspace]

Algebra IV & JKL & S. Lang & 
Introduction to Field and Galois Theory \\[2.5\defaultaddspace]

Analysis I &  MNO  & T. Apostol & 
Real numbers; Sequences and series;\newline
Calculus of a single variable \newline
(upto Taylor's Theorem) \\[\defaultaddspace]

Analysis II &  PQR  & T. Apostol & 
Riemann integral; Introduction to Calculus of several variables; \newline 
Metric spaces and elementary topological notions on it \\[\defaultaddspace]

Analysis III &  STU  & S. Dineen & 
\textbf{Vector Calculus}: multiple integrals, Jacobian formula, line and 
surface integrals, Green's, Stokes' and Gauss' (Divergence) theorems; \newline
Sequences of functions; \newline
Weierstrass approximation theorem \\[\defaultaddspace]

Analysis IV &  VWX  & Rudin & 
\textbf{Introduction to Function Spaces}:\newline
compact metric spaces, $C([a,b])$ as a complete metric space, Banach's contraction principle, 
 Stone-Weierstrass and Arzela-Ascoli theorems, Fourier series \\[2.5\defaultaddspace]

Prob.\ Theory I &  YZ  & Chung; Feller & 
Combinatorial probability and urn models; Conditional probability; \newline
Random variables; Expectation; \newline
Moment generating functions;\newline
Standard distributions (Binomial etc.); \newline
Joint and conditional distributions; \newline
Weak law of large numbers \\[\defaultaddspace]

Prob.\ Theory II &  YZ  & Feller & 
Joint distributions; \newline
Transformation of variables (assuming Jacobian formula);\newline
Distributions for sums, maxima\slash minima, order statistics, etc.;\newline
Standard multivariate and sampling distributions;\newline 
Conditional expectation; \newline
Convergence of random variables \\

\bottomrule[2pt]
\end{tabularx}
\end{document}

Приложение: Эту настройку легко расширить, чтобы таблица могла охватывать несколько страниц. Нужно (i) загрузитьдлинный столиltxtableпакеты (в дополнение к tabularxпакету) в преамбуле и (ii) внести некоторые изменения в структуру заголовка/нижнего колонтитула таблицы, чтобы она соответствовала синтаксису longtable:

  • Начните с помещения всего содержимого текущей таблицы (от \begin{tabularx}{\textwidth}{...}до \end{tabularx}) вотдельный файл. Назовите этот файл, скажем, mybiglongtable.tex. (Я уверен, вы сможете придумать более подходящее имя...)

  • В "файл драйвера" вставьте инструкцию

    \LTXtable{\textwidth}{mybiglongtable.tex} % note explicit width indication
    

    именно там, где вы хотите, чтобы начиналась таблица. (A longtableне является «плавающим объектом» в смысле слова LaTeX.) Файл драйвера из более раннего примера одностраничной таблицы будет выглядеть следующим образом:

    \documentclass[a4paper,10pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[margin=1in]{geometry}
    \usepackage{amsmath,amsthm,booktabs}
    \usepackage{tabularx,longtable,ltxtable,ragged2e}
    \newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
    \begin{document}
    \LTXtable{\textwidth}{mybiglongtable.tex}
    \end{document}
    
  • В файле mybiglongtable.texвнесите следующие изменения:

    • Изменять

      \begin{tabularx}{\textwidth}{@{} l p{1.75cm} l Y @{}}
      

      к

      \begin{longtable}{@{} l p{1.75cm} l Y @{}} % no explicit width indication
      

      и измените \end{tabularx}(в конце файла) на \end{longtable}.

    • Используя longtableсинтаксис, укажите необходимую информацию о верхнем и нижнем колонтитуле сразу после \begin{longtable}{...}, например, следующим образом:

      \toprule[2pt] 
      Name of Course & Instructor & Book(s) Referred & Brief List of Topics Covered \\ 
      \midrule
      \endfirsthead
      \multicolumn{4}{@{}l}{\emph{Continued from previous page}}\\
      \midrule[\heavyrulewidth]
      \endhead
      \midrule[\heavyrulewidth]
      \multicolumn{4}{r@{}}{\emph{Continued on following page}}
      \endfoot
      \bottomrule[2pt]
      \endlastfoot
      

      Обратите внимание, что все команды рисования правил для верхней и нижней частей таблицы назначены одной из команд \endfirsthead, \endhead, \endfoot, и \endlastfoot.

    • Оставшаяся часть файла (до \end{longtable}) должна содержать "тело" таблицы, т.е. информацию, связанную с курсами. Вы можете использовать \\[\defaultaddspace]и \\[2.5\defaultaddspace]как в более раннем MWE, чтобы обеспечить некоторую визуальную группировку содержимого.

Связанный контент