自定义命令中的 \nameref

自定义命令中的 \nameref

我已经使用 \newcommand 创建了自己的命令,并且它在参数中输入“静态”时运行良好。但是,当我给出例如 a 时,\nameref{sec:title}它会抛出如下错误:

  • 未定义控制序列
  • 缺少插入的 endcsname
  • 额外的 endcsname

我如何创建一个支持此功能的命令?

我这样定义新命令:

\newcommand{\faqFarm}[6]{
    \begin{table}[h!]
        \label{faqFarm#1}

        \begin{tabularx}{\textwidth}{@{}XXXX@{}}
             #1 & #2 & #4 & #6 \\
             & #3 & #5 & 
        \end{tabularx}
    \end{table}
}

错误的工作示例:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{hyperref}

\newcommand{\faqFarm}[6]{
    \begin{table}[htb]
        \label{faqFarm#1}

        \begin{tabularx}{\textwidth}{@{}XXXX@{}}
            \textbf{Navn:} & \textbf{Adresse:} & \textbf{Koordinater:} & \textbf{Jord:}\\
             #1 & #2 & #4 & #6 hektar\\
             & #3 & #5 & 
        \end{tabularx}
    \end{table}
}

\begin{document}
    \subsection{Working with nameref in custom command}
    \label{sec:mySubSection}

    the title one more time: \nameref{sec:mySubSection}

    \faqFarm{\nameref{sec:mySubSection}}{Bjerndrupvej 41}{6240 Løgumkloster}{Nord: 55.099754}{Øst: 9.012645}{77,625}
\end{document}

答案1

\newcommand{\faqFarm}[6]
    \begin{table}[h!]
        \label{faqFarm#1}

        \begin{tabularx}{\textwidth}{@{}XXXX@{}}
             #1 & #2 & #4 & #6 \\
             & #3 & #5 & 
        \end{tabularx}
    \end{table}
}

你失踪{[6]

\label应该总是在之后(或之内),\caption所以在这里不起作用

[h!]是一个糟糕的选项,通常会生成已更改的警告。最好使用[htp](常规使用没有意义!,这仅适用于需要忽略文档约束的特殊情况)


如上所述,如果您需要引用页码以外的任何内容,则\label必须在其后,但如果您想这样做,您需要一个构成标签文本的新(第 7 个)参数,您不能将引用放在涉及测试和排版命令的引用中,并且标签必须是简单 ascii 字符的内部标识符。\caption\label{faqFarm#1}\label

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{hyperref}

\newcommand{\faqFarm}[7]{
    \begin{table}[htb]
        \label{faqFarm#7}

        \begin{tabularx}{\textwidth}{@{}XXXX@{}}
            \textbf{Navn:} & \textbf{Adresse:} & \textbf{Koordinater:} & \textbf{Jord:}\\
             #1 & #2 & #4 & #6 hektar\\
             & #3 & #5 & 
        \end{tabularx}
    \end{table}
}

\begin{document}
    \subsection{Working with nameref in custom command}
    \label{sec:mySubSection}

    the title one more time: \nameref{sec:mySubSection}

    \faqFarm{Bjerndrupvej 41}{6240 Løgumkloster}{Nord: 55.099754}{Øst: 9.012645}{77,625}{???}{sec:mySubSection}
\end{document}

相关内容