1

I have some LaTeX code which is supposed to draw some sort of table (UML Use Case description) with Persian text inside. I get the following error no matter if I add \\ at the end of every row or not:

Misplaced \noalign.
\hline ->\noalign 
{\ifnum 0=`}\fi \hrule \@height \arrayrulewidth \futurelet...
l.52 \hline

the table renders properly but I'm willing to get rid of the error as there would dozens of such tables in the code. Here is the document:

\documentclass[a4paper, 11pt]{article}

\usepackage{array}
\usepackage{xepersian}

\settextfont[Scale=1]{XB Niloofar}
\setdigitfont{XB Niloofar}
\setlatintextfont[Scale=1]{Times New Roman}

\graphicspath{ {./} }
\graphicspath{ {./} }

\begin{document}

\maketitle

\newpage

\section*{
موارد استفاده
}

\begin{tabular}{|p{\textwidth}|}
\hline
\centering Use Case: Check Availability for Order \\
\hline
\begin{flushleft}
\begin{latin}
ID: 0
\end{latin}
\end{flushleft}
%%%%%%%%%%%%%%%%%%
\hline
\begin{flushright}
توضیح مختصر:
\newline
بررسی می‌کند که به تعداد مورد نیاز برای سفارش در دست بررسی قطعه در انبار وجود دارد یا نه.
\end{flushright}
%%%%%%%%%%%%%%%%%%
\hline
\begin{flushright}
کنش‌گر
اصلی:
\newline
مشتری
\end{flushright}
%%%%%%%%%%%%%%%%%%
\hline
\begin{flushright}
کنش‌گر
ثانویه
:
\newline
کارمند انبارداری
\end{flushright}
%%%%%%%%%%%%%%%%%%
\hline
\begin{flushright}
پیش‌شرط‌ها
:
\newline
\begin{enumerate}
    \item ثبت سفارش توسط مشتری
\end{enumerate}
\end{flushright}
%%%%%%%%%%%%%%%%%%
\hline
\begin{flushright}
روند اصلی:
\newline
\begin{enumerate}
\item
این 
UseCase
پس از ثبت سفارش توسط مشتری آغاز می‌شود
\item
برای هر یک از قطعات موجود در درخواست مشتری، تعداد مورد نیاز از آن برای تولید محصول با تعداد موجود در انبار مقایسه می‌شود
\begin{enumerate}
\item
در صورت کافی نبودن موجودی
برای هر قطعه
\lr{Estimate Order Cost}
اجرا می‌شود
\end{enumerate}
\item
پیش فاکتور برای مشتری آماده می‌شود.
\end{enumerate}
\end{flushright}
%%%%%%%%%%%%%%%%%%
\hline
\begin{flushright}
پس‌شرط‌ها
:
\newline
آماده شدن پیش‌فاکتور برای سفارش
\end{flushright}
%%%%%%%%%%%%%%%%%%
\hline
\begin{flushright}
روند
جایگزین:
\newline
ندارد
\end{flushright}
%%%%%%%%%%%%%%%%%%
\hline
\end{tabular}

\end{document}

Its being compiled with XeLatex on OS X.

1

You don't want flushright and you do want \\ before \hline.

\documentclass[a4paper, 11pt]{article}

\usepackage{array}
\usepackage{xepersian}

\settextfont[Scale=1]{Scheherazade}
\setdigitfont{Scheherazade}
\setlatintextfont[Scale=1]{Times New Roman}


\begin{document}

\section*{
موارد استفاده
}

\begin{tabular}{|>{\raggedright\arraybackslash}p{\textwidth}|}
\hline
\centering Use Case: Check Availability for Order \tabularnewline
\hline
\begin{latin}
ID: 0
\end{latin}
\\
\hline
توضیح مختصر:
\newline
بررسی می‌کند که به تعداد مورد نیاز برای سفارش در دست بررسی قطعه در انبار وجود دارد یا نه.
\\
\hline
کنش‌گر
اصلی:
\newline
مشتری
\\
\hline
کنش‌گر
ثانویه
:
\newline
کارمند انبارداری
\\
\hline
پیش‌شرط‌ها
:
\newline
\begin{enumerate}
    \item ثبت سفارش توسط مشتری
\end{enumerate}
\\
\hline
روند اصلی:
\newline
\begin{enumerate}
\item
این 
UseCase
پس از ثبت سفارش توسط مشتری آغاز می‌شود
\item
برای هر یک از قطعات موجود در درخواست مشتری، تعداد مورد نیاز از آن برای تولید محصول با تعداد موجود در انبار مقایسه می‌شود
\begin{enumerate}
\item
در صورت کافی نبودن موجودی
برای هر قطعه
\lr{Estimate Order Cost}
اجرا می‌شود
\end{enumerate}
\item
پیش فاکتور برای مشتری آماده می‌شود.
\end{enumerate}
\\
\hline
پس‌شرط‌ها
:
\newline
آماده شدن پیش‌فاکتور برای سفارش
\\
\hline
روند
جایگزین:
\newline
ندارد
\\
\hline
\end{tabular}

\end{document}

enter image description here

  • Well your solution fixes the noalign errors but messes the text adjustment so I guess I'm gonna keep those flushrights. Could you explain the syntax you used in \begin{tabular}{|>{\arraybackslash}p{\textwidth}|}? I just don't want a fix, I wanna know why. – DarthPaghius Apr 28 '17 at 17:24
  • @Parsoa Read the documentation of the array package. – egreg Apr 28 '17 at 17:25
0

A bit modified (shortened and w/o persian and XeLaTeX) this runs with \\ \hline.

\documentclass[a4paper, 11pt]{article}
\usepackage{array}
\begin{document}
\begin{tabular}{|p{\textwidth}|}
\hline
%\centering
Use Case: Check Availability for Order \\
\hline
\begin{flushleft}
%\begin{latin}
ID: 0
%\end{latin}
\end{flushleft}
%%%%%%%%%%%%%%%%%%
\\ \hline
\begin{flushright}
xxxxx xxxxx:
\newline
xxxxx xxxxxx xx xx xxxxx xxxx xxxx xxxx xxxxx xx xxx xxxxx xxxx xx
xxxxx xxxx xxxx xx xx.
\end{flushright}
%%%%%%%%%%%%%%%%%%
\\ \hline
\begin{flushright}
xxxxxx xxxx:
\newline
xxxxx
\end{flushright}
%%%%%%%%%%%%%%%%%%
\\ \hline
\begin{flushright}
xxxxxx xxxxxx :
\newline
xxxxxx xxxxxxxxx
\end{flushright}
%%%%%%%%%%%%%%%%%%
\\ \hline
\begin{flushright}
xxxxxxxxxx :
\newline
\begin{enumerate}
    \item xxx xxxxx xxxx xxxxx
\end{enumerate}
\end{flushright}
%%%%%%%%%%%%%%%%%%
\\ \hline
\begin{flushright}
xxxx xxxx:
\newline
\begin{enumerate}
\item
xxx UseCase xx xx xxx xxxxx xxxx xxxxx xxxx xxxxxx
\item
xxxx xx xx xx xxxxx xxxxx xx xxxxxxx xxxxxx xxxxx xxxx xxxx xx xx
xxxx xxxxx xxxxx xx xxxxx xxxxx xx xxxxx xxxxxx xxxxxx
\begin{enumerate}
\item
xx xxxx xxxx xxxxx xxxxxx xxxx xx xxxx Estimate Order Cost xxxx
xxxxxx
\end{enumerate}
\item
xxx xxxxxx xxxx xxxxx xxxxx xxxxxx.
\end{enumerate}
\end{flushright}
%%%%%%%%%%%%%%%%%%
\\ \hline
\begin{flushright}
xxxxxxxxx :
\newline
xxxxx xxx xxxxxxxxxx xxxx xxxxx
\end{flushright}
%%%%%%%%%%%%%%%%%%
\\ \hline
\begin{flushright}
xxxx xxxxxxx:
\newline
xxxxx
\end{flushright}
%%%%%%%%%%%%%%%%%%
\\ \hline
\end{tabular}

\end{document}
  • Well I actually tried putting \` behind all but the first hline` but it seems the problem is caused by the centring in the first row. Uncommenting it would mess everything up again. Any idea why? – DarthPaghius Apr 28 '17 at 17:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.