10 paracol 宏包使用问题

发布于 2025-04-10 12:07:52

今天尝试想在自己的文件中设置题干在左,图片在右的样式,AI 给出来了用parcolumns宏包的样例,但编译过程一直出现图片在右上角不和文字对齐的情况。

再次问 AI 后建议使用 paracol 宏包,按照给出的样例,当分两栏自定义栏宽时,一直报错Missing number, treated as zero. ^^I^^I]{2},定位就是在分栏的那个{2}的地方。

\begin{paracol}[
    columnwidths={0.6\linewidth 0.4\linewidth}, % 左栏60%,右栏40%
    gutter=0.02\linewidth,                      % 栏间距2%
    rulebetween                                 % 显示分栏线(可选)
]{2}

我以为是图片的放置有问题,索性请 AI 帮忙给一个标准的示例:

\documentclass{article}
\usepackage{paracol}      % 分栏核心包
\usepackage{graphicx}     % 图片支持
\usepackage{lipsum}       % 生成示例文本(实际使用时删除)

\begin{document}

% ========== 基础版(自动等宽分栏)==========
\begin{paracol}{2}  % 数字2表示分两栏

% 左栏(文字部分)
\begin{leftcolumn}
\section{文字标题}
\lipsum[1][1-4]  % 示例文本(替换为实际内容)

\begin{itemize}
    \item 项目列表示例1
    \item 项目列表示例2
    \item 数学公式示例:$E=mc^2$
\end{itemize}
\end{leftcolumn}

% 右栏(图片部分)
\begin{rightcolumn}
\includegraphics[width=\linewidth]{example-image-a} % 使用实际图片路径
\captionof{figure}{图片说明文字}  % 需要 \usepackage{caption}
\end{rightcolumn}

\end{paracol}

% ========== 进阶版(自定义栏宽+间距)==========
\begin{paracol}[
    columnwidths={0.6\linewidth 0.4\linewidth}, % 左栏60%,右栏40%
    gutter=0.02\linewidth,                      % 栏间距2%
    rulebetween                                 % 显示分栏线(可选)
]{2}

\begin{leftcolumn}
\section{自定义宽度标题}
\lipsum[2][1-3]
\end{leftcolumn}

\begin{rightcolumn}
\includegraphics[width=\linewidth, height=5cm]{example-image-b} % 固定高度
\captionof{figure}{自定义宽度布局示例}
\end{rightcolumn}

\end{paracol}

\end{document}

结果仍旧报错,见下图:

image.png

可以看出来还是分栏的地方。但是设置为自动等宽分栏后,是可以正常编译的。

百思不得其解!请教各位大佬。

另外还再回到引发这个问题的事情:题干在左,图片在右的样式,有没有通用的设置方式,我以前用 exam-zh 来做试卷,照猫画虎,可以做出来;但是试卷模板应该是封装了某些命令在一起,想在别的文件里用的时候就不会了。

谢谢大佬们先!

查看更多

关注者
1
被浏览
244
Sagittarius Rover
我要成为Typst糕手/(ㄒoㄒ)/~~
尝试想在自己的文件中设置题干在左,图片在右的样式

“图文排版”可以使用wrapfig,wrapfig2以及wrapstuff宏包等方式实现。

除此之外,在exam-zh-doc中也提到了text-figure宏包

image.png

使用宏包之前必须看文档问AI你根本无法系统的学习到知识),这意味着你要在终端分别执行:

texdoc wrapfig
texdoc wrapfig2
texdoc wrapstuff

请务必付出实践!!!至少要略读一下文档!!!

这里只给出一个基于wrapstuff的例子(请必须看着wrapstuff的文档来写代码做尝试,而不是无脑问AI最后报错不知所措,或者陷入和AI的扯皮):

\documentclass{ctexart}
\usepackage[a4paper,top=1.5cm,bottom=1.5cm]{geometry}
\usepackage{zhlipsum}
\usepackage{wrapstuff}
\usepackage{graphicx}
\begin{document}
\zhlipsum[2]

\begin{wrapstuff}[r]
    \includegraphics[width=6cm,height=10cm]{example-image}
\end{wrapstuff}
\zhlipsum[1]\wrapstuffclear

\zhlipsum[2]
\end{document}

image.png

至于paracol,你为什么会如此轻信AI的做法,texdoc paracol可以看到,这实际上是用来分栏用的:

image.png

我个人不觉得这是用来实现图文环排的最好办法...

回到你的MWE,所谓“请 AI 帮忙给一个标准的示例”:

  • 第一处警告是缺少中文字符,要输入中文为什么不调用ctex宏包(?)
  • 第二处报错是caption-ofUndefined control sequence.这意味着你需要调用caption或者capt-of宏包

补上之后,你的AI实际上给了你“基础版”和“进阶版”,理应分别测试

“基础版”

\documentclass{ctexart}
\usepackage{paracol}      % 分栏核心包
\usepackage{graphicx}     % 图片支持
\usepackage{lipsum}       % 生成示例文本(实际使用时删除)
\usepackage{capt-of}
\begin{document}

% ========== 基础版(自动等宽分栏)==========
\begin{paracol}{2}  % 数字2表示分两栏

% 左栏(文字部分)
\begin{leftcolumn}
\section{文字标题}
\lipsum[1][1-4]  % 示例文本(替换为实际内容)

\begin{itemize}
    \item 项目列表示例1
    \item 项目列表示例2
    \item 数学公式示例:$E=mc^2$
\end{itemize}
\end{leftcolumn}

% 右栏(图片部分)
\begin{rightcolumn}
\includegraphics[width=\linewidth]{example-image-a} % 使用实际图片路径
\captionof{figure}{图片说明文字}  % 需要 \usepackage{caption}
\end{rightcolumn}

\end{paracol}

\end{document}

image.png

没什么问题。

“进阶版”

\documentclass{ctexart}
\usepackage{paracol}      % 分栏核心包
\usepackage{graphicx}     % 图片支持
\usepackage{lipsum}       % 生成示例文本(实际使用时删除)
\usepackage{capt-of}
\begin{document}

% ========== 进阶版(自定义栏宽+间距)==========
\begin{paracol}[
    columnwidths={0.6\linewidth 0.4\linewidth}, % 左栏60%,右栏40%
    gutter=0.02\linewidth,                      % 栏间距2%
    rulebetween                                 % 显示分栏线(可选)
]{2}

\begin{leftcolumn}
\section{自定义宽度标题}
\lipsum[2][1-3]
\end{leftcolumn}

\begin{rightcolumn}
\includegraphics[width=\linewidth, height=5cm]{example-image-b} % 固定高度
\captionof{figure}{自定义宽度布局示例}
\end{rightcolumn}

\end{document}

确实出现如下报错:

Missing number, treated as zero.
<to be read again>

这说明你使用\begin{paracol}[xxxx]{2}的语法(syntax)有问题...

再次强调!!!

不要轻信AI!!! 看文档!!! 看文档!!!

image.png

image.png

If a \begin{paracol} has the optional numleft argument to specify the number of leading columns nl together with the total n given by num, columns in the environment are laid out across two adjacent pages.

\begin{paracol}的第一个可选参数为[<numleft>],指的是前导列的数量,需要的是一个数,你的AI放进去的是columnwidths={0.6\linewidth 0.4\linewidth},gutter=0.02\linewidth,rulebetween,在文档中根本找不到名为gutterrulebetween的key...

你完全陷入AI的幻觉了,要想用好AI,就不能轻信AI。如果你没有自己对问题的判断力,那你就根本不应该使用AI。

不要轻信AI!!! 看文档!!! 看文档!!!

如果你需要调整比例,也许可以看一下文档的7.3节,提供了\columnratio的命令....

image.png

回到要实现左文右图的排版上来,我个人觉得这些宏包的实践是要优于paracol的:wrapfig,wrapfig2以及wrapstuff。要想学好LaTeX务必学会看文档,轻信AI只会变成AI的奴隶,并且失去自己的核心竞争力。

期待你自行探索wrapfig,wrapfig2以及夏老师的text-figure宏包的使用方法(看文档而不是用AI,比如夏老师的私有宏包text-figure根本没有上传CTAN,AI会的概率微乎其微),自己给出例子。

以上。

2 个回答
啸行
啸行 5天前
这家伙很懒,什么也没写!

尝试提供一个最小工作示例,是要这样的感觉吗?

\documentclass{ctexart}
\usepackage{wrapstuff}
\usepackage{tasks}
\usepackage{mwe}
\usepackage{zhlipsum}

\begin{document}
\begin{wrapstuff}[r,top=0]
  \includegraphics[width=\dimeval{\linewidth/3}]{example-image.pdf}
\end{wrapstuff}
\zhlipsum[1]
\begin{tasks}
  \task 一
  \task 二
  \task 三
  \task 四
\end{tasks}
\end{document}

image.png

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览