提问于:
浏览数:
4706
## 编译环境
操作系统
* [x] Windows 7/8/10
* [ ] macOS
* [ ] Linux
`若需勾选,请把[ ]改成[x]`
Tex发行版
* [x] TexLive `2020`
* [ ] MikTeX `版本号`
* [ ] CTeX
`若需勾选,请把[ ]改成[x]`
## 我的问题
`tabular` 环境能够嵌入 `graphicx` 宏包的 `\resizebox{\linewidth}{!}{<表格>}` 命令中,以产生自适应行宽的表格,而无需手动调节表格内的字号。然而,这一方法在 `longtable` 环境下不工作。请问如何令 `longtable` 也能实现自适应行宽的表格。
**要求:**
1. 不使用字号命令手工调整
2. 不使用 `lscape` 等宏包的横向页面环境
3. 允许使用其他类似于 `longtable` 环境的跨页长表格环境
```tex
\documentclass[UTF8]{ctexart}
\usepackage{array,graphicx,showframe}
\usepackage{longtable}
\begin{document}
\centering
\begin{tabular}{*{20}{|c<{占位}}|}\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
\end{tabular}
\resizebox{\linewidth}{!}
{\begin{tabular}{*{20}{|c<{占位}}|}\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
\end{tabular}}
% \resizebox{\linewidth}{!}
{\begin{longtable}{*{20}{|c<{占位}}|}\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
&&&&& &&&&& &&&&& &&&& \\\hline
\end{longtable}}
\end{document}
```
![](https://wenda.latexstudio.net/data/attach/200901/ZsKloeE6.jpg)
1 回答
0
1. 普通的表格环境一般也很少用`\resizebox` 的方式,除非真的太宽了。一般用 `tabularx` 环境的 `X` 列模式。
2. `longtable` 也可以使用 `tabularx` 的 `X` 列模式,这时要使用 `ltxtable` 宏包,这是`longtable` 和 `tabularx` 包的“合体”,但是需要在单 独的一个`tex`文件中使用`longtable` 环境,这时可以使用 `X` 列模式,然后,在正文中使用
``` tex
\LTXtable{<width>}{<filename>}
```
来插入表格。
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。