\documentclass[convert]{standalone} 忽略换行符

\documentclass[convert]{standalone} 忽略换行符

我尝试结合这个答案将 LaTeX 文档编译为尽可能短的 PNG 图像 我的回答在多列表格中添加列

但是pdflatex -shell-escape table.tex忽略换行符并且 3 个表格是水平对齐的而不是垂直对齐的。

表格.tex

\documentclass[convert]{standalone}
% \documentclass{article}

\usepackage{booktabs} % for nice lines
\usepackage{siunitx}  % nice numbers and units and 'S' in table
\usepackage{multirow} % enable \multirow command

\begin{document}
short answer to your question:\\
\begin{tabular}{|c|c|S|}
\hline
Genre & Name & {Weight}\\\hline
Humain & Aragorn & 102 \\\hline
\multirow{4}{*}{Hobbit}&Frodon & 32.1\\\cline{2-3}
    &Sam & 3.2 \\\cline{2-3}
    &Peregrin & 2.232\\\cline{2-3}
    &Meriadoc & 23 \\\hline
Elfe&Legolas & 34.5 \\\hline
\end{tabular}\\[1cm]


You can also use the power of booktabs and siunitx:\\
\begin{tabular}[ht]{l c S} % alignment l = left, c = centre, S = at decimal - needs siunitx
\toprule
Genre&Name& {Weight}\\  % protect non numbers with {} in S columns
\midrule
Elfe&Legolas & 34.5\\
Dwarf&Peter & 103.31\\
\bottomrule
\end{tabular}\\[1cm]

And combine that with your table:\\
\begin{tabular}{c c S}
\toprule
Genre & Name & {Weight}\\\midrule
Humain & Aragorn & 102 \\\midrule
\multirow{4}{*}{Hobbit}&Frodon & 32.1\\\cline{2-3}
    &Sam & 3.2 \\\cline{2-3}
    &Peregrin & 2.232\\\cline{2-3}
    &Meriadoc & 23 \\\midrule
Elfe&Legolas & 34.5 \\
\bottomrule
\end{tabular}


\end{document}

答案1

默认情况下,该类standalone不会创建段落。但是,使用varwidth选项可以创建段落;因此

\documentclass[varwidth,convert]{standalone}

将按照您的需要进行操作,将宽度调整为最长的线。

答案2

有几种可能性:

桌子

\documentclass{standalone}

\begin{document}
\begin{tabular}{@{}l@{}}
  line 1\\
  line 2
\end{tabular}
\end{document}

结果

评论:

  • A在行中tabular添加s,这可能会导致较小的白色边缘。\strut
  • standalone仅使用字符边界框,不知道字形外观的边界框。因此,额外的边距对于避免字符被截断是有意义的。
  • 可以运行结果pdfcrop以去除剩余的白色边缘。

包裹varwidth

varwidth同名包的环境是minipage之后水平收缩的一种:

\documentclass{standalone}
\usepackage{varwidth}

\begin{document}
\begin{varwidth}{\linewidth}
  line 1

  line 2
\end{varwidth}
\end{document}

Class为这个用例standalone提供了选项varwidth(感谢 mozartstrasse 的提示)。这简化了示例:

\documentclass[varwidth]{standalone}

\begin{document}
  line 1

  line 2
\end{document}

结果

角色剪裁

字符字形超出其官方字体边界框的问题无法在 TeX 内部解决,因为 TeX 只知道官方字符边界框,而不知道它们的视觉外观。

例子:

\documentclass[varwidth]{standalone}

\begin{document}
  \raggedleft
  \itshape
  line f

  line $\not$
\end{document}

剪裁结果

部分f不可见且\not已完全消失(极端示例,因为\not宽度为零,它与以下关系运算符重叠)。

作为解决方法,可以添加更大的边距:

\documentclass[margin=10pt,varwidth]{standalone}

并且结果被裁剪,例如通过pdfcrop

结果

答案3

\documentclass[preview,multi]{standalone}

\begin{document}
\preview
line 1
\endpreview

\preview
line 2
\endpreview
\end{document}

相关内容