我正在使用以下答案来格式化表格emacs auctex 表格单元格的垂直对齐方式. 它就像它的功能名一样,具有神奇的魔力iw/tabular-magic
。
作为一个小小的区别,我希望每个项目之间都有一条线。当我使用 执行此操作时\hline
,我观察到如果一行以 结尾,\\ \hline
其格式就会变得混乱。
原来的:
\begin{longtable}{| p{.10\textwidth} | p{.85\textwidth} |}\hline
\textbf{Symbol} & \textbf{Meaning} \\ \hline
$J$ & Set of jobs \\ \hline
$D$ & Set of data files \\ \hline
\end{longtable}
格式化后:
\begin{longtable}{| p{.10\textwidth} | p{.85\textwidth} |}\hline
\textbf{Symbol} & \textbf{Meaning} \\ \hline $J$ & Set of jobs \\ \hline $D$ & Set of
data files
\end{longtable}
没有\hline
格式化的输出:
\begin{longtable}{| p{.10\textwidth} | p{.85\textwidth} |}\hline
\textbf{Symbol} & \textbf{Meaning} \\
$J$ & Set of Jobs \\
$D$ & Set of data files \\
\end{longtable}
如果一行以 结尾,我该如何在 emacs auctex 中垂直对齐 & celss \hline
?
答案1
我怀疑您的初始化文件中没有以下行:
(setq TeX-parse-self t)
通过 init 文件中的行,AUCTeX 会查看 .tex 文件中的包并为其加载支持文件,在本例中,longtable.el
该文件包含以下内容:
(add-to-list (make-local-variable 'LaTeX-indent-environment-list)
'("longtable" LaTeX-indent-tabular) t)
这一行告诉 AUCTeX 如何填充 longtable 中的内容。如果没有这一行,函数调用(LaTeX-fill-environment nil)
会破坏格式。
因此,要么使用(setq TeX-parse-self t)
(强烈推荐),要么尝试注释掉该行的函数:
(defun iw/tabular-magic ()
(interactive)
(unless (string= (LaTeX-current-environment) "document")
(let ((s (make-marker))
(e (make-marker)))
(set-marker s (save-excursion
(LaTeX-find-matching-begin)
(forward-line)
(point)))
(set-marker e (save-excursion
(LaTeX-find-matching-end)
(forward-line -1)
(end-of-line)
(point)))
;; Delete the next 2 lines if you don't like indenting and removal
;; of whitespaces:
;; (LaTeX-fill-environment nil)
(whitespace-cleanup-region s e)
(align-regexp s e "\\(\\s-*\\)&" 1 1 t)
(align-regexp s e "\\(\\s-*\\)\\\\\\\\")
(set-marker s nil)
(set-marker e nil))))