2010-07-02 2 views
3

В LaTeX я использую пакет listings, чтобы отобразить фрагмент кода внутри таблицы. Но кажется, что при использовании этого пакета вертикальное выравнивание ячеек меняется.LaTeX: вертикальное выравнивание в таблице, содержащей список

Вот код:

\documentclass[a4paper,11pt]{article} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern,textcomp} 
\usepackage[frenchb]{babel} 
\usepackage{listings} 

\begin{document} 
\begin{tabular}{ll} 
\hline Méthode & Exemple d'utilisation\\ 
\hline isLetter()& 
\begin{lstlisting} 
QChar MyChar('x'); 
bool IsLetter = MyChar.isLetter(); 
// IsLetter vaut vrai 
// bla bla bla 
\end{lstlisting}\\ 
\hline 
\end{tabular} 
\end{document} 

и вот что я получаю (обратите внимание, центрированную по вертикали alignement первого столбца):

http://img820.imageshack.us/img820/8509/image4l.png.

Если я не использовать listings пакет внутри таблицы, вертикальная alignement отличается (по центру):

\begin{tabular}{lp{5cm}} 
\hline Méthode & Exemple d'utilisation\\ 
\hline isLetter()& 
QChar MyChar('x'); 
bool IsLetter = MyChar.isLetter(); 
// IsLetter vaut vrai 
// bla bla bla 
\\ 
\hline 
\end{tabular} 

http://img691.imageshack.us/img691/8585/image5gy.png.

Я хотел бы положить код внутри таблицы , но сохранить вертикальное выравнивание в верхней части для ячеек.

ответ

2

Сообщите латексу, чтобы выровнять его в верхней части базовой линии его текстовой строки по опции boxpos.

\begin{lstlisting}[boxpos=t] 
QChar MyChar('x'); 
bool IsLetter = MyChar.isLetter(); 
// IsLetter vaut vrai 
// bla bla bla 
\end{lstlisting} 

Проблема также происходит и с другими боксами

\parbox[t]{3cm}{Hello\\World\\Peace} 
\parbox[t]{3cm}{Goodbye} 

Если вы не зададите параметр положения t, он будет выравнивать обе коробки центрированные относительно друг друга.

+0

Спасибо, он отлично работает (хотя все еще неясно, почему установка опции в блоке lstlisting влияет на других)! –

 Смежные вопросы

  • Нет связанных вопросов^_^