You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LaTeX中使用\ref引用带行号的C++代码标签失效问题求助

解决LaTeX代码行标签引用失效的问题

核心问题原因

你使用的/*@\label{...}*/是listings包的escape语法,但如果未正确配置escape规则,LaTeX会将这些内容视为普通代码注释,无法解析\label命令;同时,若行号显示未开启,\label也无法关联到对应行号。

具体解决方案

  • 第一步:在导言区正确配置listings包,开启escape功能并匹配代码中的注释边界符:
\usepackage{listings}
\lstset{
    numbers=left, % 开启左侧行号显示
    escapeinside={/*@}{@*/}, % 定义escape的起始/结束符,与代码中的注释格式对应
    language=C++, % 指定代码语言为C++
    basicstyle=\ttfamily % 设置代码基础样式
}
  • 第二步:修正代码中的标签写法,确保escape边界符完整:
int main(){
    long count = 0;/*@\label{stat-3}@*/
    long rd = 0;/*@\label{stat-4}@*/
    return 0;
}
  • 第三步:正常使用\ref引用标签即可:
代码行\ref{stat-3}声明了变量count。

关键注意事项

  • 必须保证escapeinside的配置与代码中使用的注释边界完全一致,你之前的代码缺少了结束符中的@,导致listings无法识别需要解析的LaTeX命令。
  • 必须开启行号显示(numbers=left或numbers=right),否则行号计数器未激活,\label无法绑定到对应行号。

内容的提问来源于stack exchange,提问作者neeraj_123456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:15:19